使用与 DBUnit 中初始数据集相同的 table 名称创建 XML 数据集?
Create XML dataset with the same table name as initial data set in DBUnit?
我正在尝试像这样在数据库单元中创建初始数据库状态...
public function getDataSet() {
$primary = new \PHPUnit\DbUnit\DataSet\CompositeDataSet();
$fixturePaths = [
"test/Seeds/Upc/DB/UpcSelect.xml",
"test/Seeds/Generic/DB/ProductUpcSelect.xml"
];
foreach($fixturePaths as $fixturePath) {
$dataSet = $this->createXmlDataSet($fixturePath);
$primary->addDataSet($dataSet);
}
return $primary;
}
然后在查询之后我尝试调用这个用户定义的函数...
protected function compareDatabase(String $seedPath, String $table) {
$expected = $this->createFlatXmlDataSet($seedPath)->getTable($table);
$result = $this->getConnection()->createQueryTable($table, "SELECT * FROM $table");
$this->assertTablesEqual($expected, $result);
}
这里的想法是我有一个初始数据库状态,运行 我的查询,然后将实际 table 状态与表示我期望的 XML 数据集进行比较 table地样子。 PHPUnit's documentation for DBUnit 中描述了此过程,但我一直抛出异常...
PHPUnit\DbUnit\InvalidArgumentException: There is already a table named upc with different table definition
测试示例...
public function testDeleteByUpc() {
$mapper = new UpcMapper($this->getPdo());
$mapper->deleteByUpc("someUpcCode1");
$this->compareDatabase("test/Seeds/Upc/DB/UpcAfterDelete.xml", 'upc');
}
我似乎在关注文档...这应该如何完成?
这实际上与创建第二个 XML 数据集无关。抛出此异常是因为我在 getDataSet()
方法中加载的两个固定装置都具有 upc
.
的 table 定义
我正在尝试像这样在数据库单元中创建初始数据库状态...
public function getDataSet() {
$primary = new \PHPUnit\DbUnit\DataSet\CompositeDataSet();
$fixturePaths = [
"test/Seeds/Upc/DB/UpcSelect.xml",
"test/Seeds/Generic/DB/ProductUpcSelect.xml"
];
foreach($fixturePaths as $fixturePath) {
$dataSet = $this->createXmlDataSet($fixturePath);
$primary->addDataSet($dataSet);
}
return $primary;
}
然后在查询之后我尝试调用这个用户定义的函数...
protected function compareDatabase(String $seedPath, String $table) {
$expected = $this->createFlatXmlDataSet($seedPath)->getTable($table);
$result = $this->getConnection()->createQueryTable($table, "SELECT * FROM $table");
$this->assertTablesEqual($expected, $result);
}
这里的想法是我有一个初始数据库状态,运行 我的查询,然后将实际 table 状态与表示我期望的 XML 数据集进行比较 table地样子。 PHPUnit's documentation for DBUnit 中描述了此过程,但我一直抛出异常...
PHPUnit\DbUnit\InvalidArgumentException: There is already a table named upc with different table definition
测试示例...
public function testDeleteByUpc() {
$mapper = new UpcMapper($this->getPdo());
$mapper->deleteByUpc("someUpcCode1");
$this->compareDatabase("test/Seeds/Upc/DB/UpcAfterDelete.xml", 'upc');
}
我似乎在关注文档...这应该如何完成?
这实际上与创建第二个 XML 数据集无关。抛出此异常是因为我在 getDataSet()
方法中加载的两个固定装置都具有 upc
.