PHP でカスタム例外のキャプチャと処理をテストしようとしています。
追加のプロパティとメソッドを使用して、基本例外タイプを拡張しました。
スタブしているクラスの 1 つが例外をスローする可能性があります。その例外を正しくキャプチャして処理していることをテストできるようにしたいと考えています (この場合、呼び出しから返される応答オブジェクトを作成することを意味します)。
例えば
try {
$objectBeingStubbed->doSomething();
} catch (\Exception $ex) {
if ($ex instanceof CustomExceptionType) {
$this->_errorResponse->error->message = $exception->getMessage();
$this->_errorResponse->error->code = $exception->getCode();
$this->_errorResponse->error->data = $exception->getData();
} else {
throw $ex;
}
}
スローされる例外をシミュレートしようとしています:
$objectStub->expects($this->any())
->method('doSomething')
->will($this->throwException(new CustomExceptionType()));
しかし、私がテストしているクラスに例外が到着すると、それは "Mock_ErrorResponse_????" のインスタンスになります。カスタム例外を拡張しません。私の例外は、代わりに Mock_ErrorResponse の「$exception」プロパティに含まれています。
次のような恐ろしいことを強いられることなく、これを処理する方法はありますか?
if ($ex instanceof PHPUnit_Framework_MockObject_Stub_Exception) {
$ex = $ex->exception;
}
if ($ex instanceof CustomExceptionType) {
...
私がテストしているクラスの中で?