是否有方法阻止DBUnit基于XML数据集创建记录?
我试图测试查询是否会插入一条记录,然后将其与XML数据集进行比较。
public function testInsert()
{
$statement = $this->getConnection()
->getConnection()
->query(
'insert into Grades (Vendor) values (''test'')'
);
$actual = $this->getConnection()->createQueryTable(
'Grades',
'select Vendor from Grades'
);
$this->assertTablesEqual(
$this->getDataSet()->getTable('Grades'),
$actual
);
}
public function getDataset()
{
//returns dataset below
}
XML:
<?xml version="1.0" encoding="UTF-8" ?>
<dataset>
<Grades
uid="345"
/>
</dataset>
结果是:
PHPUnit: Failed asserting that
+----------------------+
| Grades |
+----------------------+
| Vendor |
+----------------------+
| test |
+----------------------+
| test |
+----------------------+
is equal to expected
+----------------------+
| Grades |
+----------------------+
| Vendor |
+----------------------+
| test |
+----------------------+
有人能解释一下为什么要插入XML数据集,以及我如何自动阻止它这样做吗?
发现我应该在比较结果之前使用一个空的"基本"表XML。
public function getDataSet()
{
return $this->createFlatXMLDataSet("seed.xml");
}
public function testUpdate()
{
$statement = $this->getConnection()
->getConnection()
->query(
'insert into Grades (Vendor) values (''test'')'
);
$actual = new 'PHPUnit_Extensions_Database_DataSet_QueryDataSet($this->getConnection());
$actual->addTable(
'Grades',
'select Vendor from Grades'
);
$expected = $this->createFlatXMLDataSet("expected.xml");
$this->assertDataSetsEqual(
$expected,
$actual
);
}
seed.xml
<?xml version="1.0" encoding="UTF-8" ?>
<dataset>
<Grades
/>
</dataset>
预期.xml
<?xml version="1.0" encoding="UTF-8" ?>
<dataset>
<Grades
Vendor="test"
/>
</dataset>