PHPUnitでは、次のいずれかを使用して、例外をスローするメソッドスタブを作成できます。
[->will($this->throwException(..)][1]
->willThrowException(..
メソッドスタブがPHPエラーをスローするいくつかのケースをテストする必要があります。
PHPUnitはこのようなものをサポートしていますか?ここに回避策はありますか?
PHPUnit TestCaseクラスのthrowException()は、Throwableのインスタンスをparamとして使用できます。
これの意味は、
->will($this->throwException(new Error()));
->will($this->throwException(new Exception()));
両方とも有効です
次のように、テスト内の関数に例外をスローさせることができます。
$handlerConsentMessage = $this->getMockBuilder('YourClass')
->setMethods(array('yourMethod'))->getMock();
$handlerConsentMessage->method('yourMethod')->willThrowException(new Exception());
$handlerConsentMessage->run('functionToRun');
これで、テスト関数functionToRunを実行すると、関数YourMethodが呼び出された場合、例外がスローされます。
エラーをトリガーするだけです:
$foo
->expects($this->once())
->method('bar')
->willReturnCallback(function () {
trigger_error(
'Now really is not a good time',
E_USER_ERROR
);
});
参照については、以下を参照してください。