1

次の擬似コードがあります

public function testSomething() {
    // assert something
    // assert something else

    $this->setExpectedException(...);
    // trigger my exception here

    // do one last thing
}

私が見る問題は、例外がトリガーされた後のコードは作成されません。これは正しいです?

これは一般的な疑問です。これが正常な場合は、テストをリファクタリングして、try/catch を直接実行し、fail()何もキャッチされない場合はテストを実行します。

4

1 に答える 1

3

例外の後のコードは作成しないでください。setExpectedExceptionテストをaにすることと考えてください。try -- catchしたがって、例外がスローされた後のコードは実行されません。

例外の後で何かを行う/チェックする必要がある場合は、それをキャッチする必要があります。キャッチに関する警告が1つありますが、スローされる例外について具体的に説明してください。PHPUnitは失敗したテストに対して例外をスローし、誤ってこの例外をキャッチして、テストが誤って合格する可能性があります。

更新:実行しているコードがクリーンアップされている場合は、それをテストのtearDownメソッドに移動することも検討してください。

于 2012-11-07T14:15:35.087 に答える