PHPUnit:是否可以将包含相同表的数据集添加到复合数据集中?

PHPUnit:是否可以将包含相同表的数据集添加到复合数据集中?,php,unit-testing,phpunit,Php,Unit Testing,Phpunit,根据PHPUnit文件(http://www.phpunit.de/manual/3.7/en/database.html#understanding-数据集和数据表),我们可以将包含同一个表的数据集添加到复合数据集中,并且“当多个数据集包含同一个表时,将按指定顺序追加行”。但是,在PHPUnit_Extensions_Database_DataSet_compositedastatset::addDataSet()方法中,它有以下代码: foreach ($dataSet->ge

根据PHPUnit文件(http://www.phpunit.de/manual/3.7/en/database.html#understanding-数据集和数据表),我们可以将包含同一个表的数据集添加到复合数据集中,并且“当多个数据集包含同一个表时,将按指定顺序追加行”。但是,在PHPUnit_Extensions_Database_DataSet_compositedastatset::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;
    }