2016-05-05 38 views
0

ユニットテストでは、次のgetDataSetメソッドを使用してDBをセットアップしています。テストクラスはPHPUnit_Extensions_Database_TestCaseから継承されますテストの順序を変更したときにユニットテストが成功する

フレームワークは削除されず、各テストの前に行を挿入しないようです。私がそのように感じる理由は、テストの順序を変えたときにテストが合格になっているからです。

誰かが私が間違っていることを示唆する人はいますか?もっと洞察力を増やすにはどこを見なければいけませんか?

また、以前のフィクスチャの一部はXML形式で、新しいフィクスチャは配列形式であるため、コンポジットデータセットを使用する必要がありました。これにはxmlの備品は必要ありません。

public function getDataSet() 
{ 

    $compositeDs = new PHPUnit_Extensions_Database_DataSet_CompositeDataSet(); 
    /** @var PHPUnit_Extensions_Database_DataSet_FlatXmlDataSet $ds */ 
    $arrayDS = new ArrayDataSet([ 
     __DIR__ . '/seed-data/companies.php', 
    ]); 

    $compositeDs->addDataSet($arrayDS); 

    return $compositeDs; 
} 

pdo接続を保存して再利用することができますか?

final public function getConnection() 
{ 
    if ($this->conn === null) { 
     if (self::$pdo == null) { 
      self::$pdo = new PDO($GLOBALS['DB_DSN'], $GLOBALS['DB_USER'], $GLOBALS['DB_PASSWD']); 
     } 
     $this->conn = $this->createDefaultDBConnection(self::$pdo, $GLOBALS['DB_DBNAME']); 
    } 

    return $this->conn; 
} 

答えて

0

getDataSetを、以下のようなので、すべてのテスト、データベース・テーブルが切り捨てられ、提供されたデータを挿入され、すべてのテストの前に呼び出されます。

あなたのテストの順序は関係ありません。

+0

これも私の理解です。 私は自分のコードで問題が見つかりました。 parent :: setUp()は私のsetUpメソッドと呼ばれていませんでした。 – Scalable

+0

@Scalableテストクラスの 'setUp'メソッドに独自のコードを持っているなら、実際には' parent :: setUp() 'を最後に呼び出す必要があります:-) – MichaelDeBoey

関連する問題