[英]How can I use PHPUnit's DBUnit with a Microsoft SQL Server database?
[英]Stop PHPUnit's DBUnit from inserting XML dataset in database
有沒有一種方法可以阻止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>
expected.xml
<?xml version="1.0" encoding="UTF-8" ?>
<dataset>
<Grades
Vendor="test"
/>
</dataset>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.