2

根据 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;

我错过了什么还是文档不正确?

4

1 回答 1

2

为了添加涉及同一个表的多个数据集,您需要扩展 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;
    }
于 2012-08-21T19:23:39.240 回答