gpt4 book ai didi

php - 阻止 PHPUnit 的 DBUnit 在数据库中插入 XML 数据集

转载 作者:行者123 更新时间:2023-11-30 22:47:40 24 4
gpt4 key购买 nike

有没有办法阻止 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>

关于php - 阻止 PHPUnit 的 DBUnit 在数据库中插入 XML 数据集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29132020/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com