我試圖在PHP中測試捕獲並處理自定義異常。PHPUnit - 投擲,捕獲和處理自定義異常
我已經擴展了一些額外的屬性和方法的基本異常類型。
其中一個我正在存根的類可以拋出一個異常,我想能夠測試我正確捕獲並處理該異常(在這種情況下意味着構建一個響應對象以便從調用中返回) 。
例如
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) {
...
我測試的類裏面?
感謝在不同的try/catch結構的頂端。今天早上我又試了一次,它按預期工作,無法重複我昨晚的問題。我要把它歸結爲一個愚蠢的錯誤,從日常疲勞的某個地方。再次感謝您的幫助! – Dan 2013-02-26 11:12:53