【发布时间】:2013-11-17 08:49:14
【问题描述】:
我对 phpunit 和 mocking 很陌生,我想在我的 symfony2 项目中测试一个 Listener,什么是内核异常监听器。
这是我要测试的类:
public function onKernelException(GetResponseForExceptionEvent $event)
{
$code = $event->getException()->getCode();
if($code == 403)
{
$request = $event->getRequest();
$session = $request->getSession();
$session->getFlashBag()->add('notice', 'message');
$session->set('hardRedirect', $request->getUri());
}
}
首先我只是想测试一下,所以如果代码是 404 什么都不会发生,这是我写的测试:
public function testWrongStatusCode()
{
$exceptionMock = $this->getMock('Exception')
->expects($this->once())
->method('getCode')
->will($this->returnValue('404'));
$eventMock = $this->getMockBuilder('Symfony\Component\HttpKernel\Event\GetResponseForExceptionEvent')
->disableOriginalConstructor()
->getMock();
$eventMock->expects($this->once())
->method('getException')
->will($this->returnValue($exceptionMock));
//here call the listener
}
但是 PHPunit 说,getCode 函数从未被调用过。
【问题讨论】:
标签: unit-testing symfony mocking phpunit