我试图在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