【发布时间】:2015-04-15 17:03:11
【问题描述】:
我目前正在为 symfony2 中的忘记密码函数编写 PHPUnit 测试用例。
我想要做的是:
- 模拟一个邮件类并将其设置在控制器容器中进行即时测试。
这是模拟:
private function getMockMailer($return)
{
$mailer = $this->getMockBuilder('Swift_Mailer')
->disableOriginalConstructor()
->setMethods(array('send'))
->getMock();
$mailer->expects($this->any())
->method('send')
->with($this->anything())
->will($this->returnValue($return));
return $mailer;
}
转储模拟对象返回:“Mock_Swift_Mailer_02ed3dbc”,这是正确的。
但是当我在控制器中转储邮件程序类时,我得到“Swift_Mailer”,它不是模拟对象。
这是我在测试中设置邮件程序的方式:
$container = static::$kernel->getContainer();
$mailer = $this->getMockMailer(true);
$container->set('mailer', $mailer);
$controller = new LoginController();
$controller->setContainer($container);
我使用相同的方法来模拟路由器和模板类,并且效果很好。 Mailer 是唯一一个给我这个问题的人。
感谢任何想法,谢谢。
【问题讨论】:
标签: php unit-testing symfony