我希望测试这个类中的方法:
class EmailerService
{
protected $mailer;
protected $router;
protected $em;
protected $emailMan;
protected $emailReminderMan;
protected $secret;
/**
* Construct
*
* @param \Swift_Mailer $mailer
* @param \Symfony\Bundle\FrameworkBundle\Routing\Router $router
* @param \Doctrine\ORM\EntityManager $em
* @param EmailManager $emailMan
* @param EmailReminderManager $emailReminderMan
* @param $secret
*/
public function __construct(Swift_Mailer $mailer, Router $router, EntityManager $em, EmailManager $emailMan, EmailReminderManager $emailReminderMan, $secret)
{
$this->mailer = $mailer;
$this->router = $router;
$this->em = $em;
$this->emailMan = $emailMan;
$this->emailReminderMan = $emailReminderMan;
$this->secret = $secret;
}
我的测试目前长这样:
class EmailerServiceTest extends \PHPUnit_Framework_TestCase
{
protected $emailer;
public function setUp()
{
$mailer = $this->getMockBuilder('Swift_Mailer')
->disableOriginalConstructor()
->getMock();
$router = $this->getMockBuilder('Router')
->disableOriginalConstructor()
->getMock();
$em = $this->getMockBuilder('EntityManager')
->disableOriginalConstructor()
->getMock();
$emailMan = $this->getMockBuilder('EmailManager')
->disableOriginalConstructor()
->getMock();
$emailReminderMan = $this->getMockBuilder('EmailReminderManager')
->disableOriginalConstructor()
->getMock();
$secret = '123';
$this->emailer = new EmailerService($mailer, $router, $em, $emailMan, $emailReminderMan, $secret);
}
但我收到了错误信息:
1) T\CBundle\Tests\Service\EmailerServiceTest::testGetVariablesForModule T\CBundle\Service\EmailerService::__construct() 的第二个参数必须是 Symfony\Bundle\FrameworkBundle\Routing\Router 的实例, 实际给出的是 Mock_Router_3e61717e 的实例,调用位置为...
我也有点困惑为什么它会触发 Router 错误,而不是先触发 Swift_Mailer 错误。
$router
在第二个代码片段中是什么? - DonCallistonew EmailerService($mailer, $router, .... )
你能展示一下$router
的声明吗?此外,我想知道EmailerService
是作为服务注册的还是只是你使用的命名约定? - DonCallisto$this->getMockBuilder('Symfony\Bundle\Frameworkbundle\Routing\Router')
。 - Touki