【发布时间】:2014-11-07 04:11:14
【问题描述】:
我有一个处理错误的类,包括异常。如果捕获到异常,我会将异常作为参数传递给我的异常/错误处理程序。
try {
someTrowingFnc();
} catch (\Exception $e) {
this->error->exception($e);
}
现在我想对这个错误处理程序进行单元测试并模拟异常。
我发现很难模拟异常以便我可以控制异常消息、文件和行。
$exceptionMock = $this->getMock('Exception', array(
'getFile',
'getLine',
'getMessage',
'getTrace'
)); // Tried all mock arguments like disable callOriginalConstructor
$exceptionMock->expects($this->any())
->method('getFile')
->willReturn('/file/name');
$exceptionMock->expects($this->any())
->method('getLine')
->willReturn('3069');
$exceptionMock->expects($this->any())
->method('getMessage')
->willReturn('Error test');
下面代码的结果总是返回NULL
$file = $exception->getFile();
$line = $exception->getLine();
$msg = $exception->getMessage();
是否有解决方法来模拟异常或者我只是做错了什么?
【问题讨论】:
-
您的对象是否抛出异常?否则,您可以生成该模拟,但如果没有抛出它,或者您没有生成该条件,则该模拟将不会发生。是否有可能显示所有代码,或者至少显示类的代码?,我从 2011 年起就没有使用过 phpunit,所以请记住这一点,但在我的脑海中,我记得你有一个装饰器捕获一个预期的异常,但你的情况似乎有点不同,你正在生成一个模拟,但是(这是我的假设),你没有生成抛出异常本身的条件,所以你的断言将失败。
标签: exception error-handling phpunit