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 に答える