2012-05-03 7 views
1
でのユニットテストの「解体」にフック

私は、パラメータとして期待されるSQLクエリをとるモックデータベースクラスを作成し、予想されるクエリのその配列に対してそれにすべての呼び出しを比較しました:は外部PHPUnitの

class Mock_Database 
{ 
    public function __construct(PHPUnit_Framework_TestCase &$testcase, array $expected_queries); 
    public function run_query($sql); 
} 

問題はです。テストが終了したら、すべてのクエリが実行されたかどうかを自動的にチェックしたいのです。私はそれが自動的にtearDown、またはそれに類するものにフックさせたいと思います。この問題の解決法はありますか?ありがとうございました。

答えて

0

私も同様の問題があります。それは少し汚れていますが、テストの後にアサーションを実行しようとすることができます。 「assertPostConditionsは」各テストケースの後に実行されます。

class Foo_Test extends PHPUnit_Framework_TestCase { 
    /** 
    * @see PHPUnit_Framework_TestCase::assertPostConditions() 
    */ 
    public function assertPostConditions() 
    { 
     $this->dbMock->verify(); 
    } 
} 

そしてPHPUnit_Framework_ExpectationFailedExceptionを投げる - 検証方法に - 何かが間違っていた場合:

class Mock_Database { 
    public function verify() 
    { 
     // detect differences and assign $allQueriesExecuted 

     if (!$allQueriesExecuted) { 
      throw new PHPUnit_Framework_ExpectationFailedException(/*...*/); 
     } 
    } 
} 
関連する問題