2016-12-14 4 views
0

タイトルが不明瞭ですが、ここではわかります。ユニットテストの標準PHP関数からのエラーメッセージをキャッチ

基本的にstrpos()を実行する方法で単体テストを実行しています。このように:

return strpos($this->getHeaderLine($headerName), $value) !== false; 

ここで、空の値を入力するとどうなりますか。空の文字列を指定すると、次のメッセージが表示されます。

strpos(): Empty needle 

このメッセージ自体は明らかですが、ここでは例外をスローしたくありません。私はそれがこのメッセージを返すかどうかを知りたい。これをやり直すにはどうしたらいいですか、私のメソッドを書き直す必要がありますか?

+0

技術的には、 'set_error_handler'と' restore_error_handler'を使うことができます。デザインを考えると良い選択ではありません。 – xmike

答えて

1

は、以下のことを試してみてください。

public function testWarning() 
{ 
    $this->expectException(PHPUnit_Framework_Error_Warning::class); 
    $this->expectExceptionMessage("Empty needle"); 
    strpos('meh', ''); 
} 

このテストは合格していますが、期待をコメントアウトした場合、それは失敗します。 PHPUnitフレームワークには、PHPUnit_Framework_Error_Deprecated,PHPUnit_Framework_Error_Noticeなどの関連クラスがあります。

関連する問題