我有一个类来处理错误,包括异常。如果发现异常,我会将异常作为参数传递给我的异常/错误处理程序。PHPUnit模拟异常
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一起工作,所以记住这一点,但我的头顶,我记得你有一个装饰器来捕获一个预期的异常,但你的情况似乎有点不同,你正在产生一个模拟,但是(这是我的假设),你没有产生抛出异常本身的条件,所以你的断言会失败。 – 2014-09-13 03:10:25