根据PHPUnit文档(http://www.phpunit.de/manual/3.7/en/database.html#understanding-datasets-and-datatables),我们可以将包含相同表的数据集添加到复合数据中设置,以及“当多个数据集包含相同的表时,行将按指定的顺序附加”。但是,在 PHPUnit_Extensions_Database_DataSet_CompositeDataSet::addDataSet() 方法中,它具有以下代码:
foreach ($dataSet->getTableNames() as $tableName)
{
if (in_array($tableName, $this->getTableNames()))
{
throw new InvalidArgumentException("DataSet contains a table that already exists: {$tableName}");
}
}
$this->dataSets[] = $dataSet;
我遗漏了什么或者文档不正确吗?
最佳答案
为了添加涉及同一表的多个数据集,您需要扩展 CompositeDataSet 类并将 addDataSet 方法重写为以下内容:
public function addDataSet(PHPUnit_Extensions_Database_DataSet_IDataSet $dataSet)
{
foreach ($dataSet->getTableNames() as $tableName)
{
if (in_array($tableName, $this->getTableNames()))
{
$this->getTable($tableName)->addTableRows($dataSet->getTable($tableName));
return;
}
}
$this->dataSets[] = $dataSet;
}
关于PHPUnit:是否可以将包含相同表的数据集添加到复合数据集中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12046965/