2017-04-25 50 views
0

我在Laravel项目中为忘记密码功能创建了一个RESTFUL API。我完成了它。测试事件在Laravel发送电子邮件

但是,我不知道如何建立unittest来测试事件发送电子邮件发生?

我该如何构建它?

+1

这是一个很好的问题,但如果你可以发布任何代码将得到加强。你通常不会写一个邮件发送单元测试(你希望你的单元测试开始邮件吗?),但验证发送电子邮件的请求正确提出与正确的主体/主题等可能是有用的 –

+0

谢谢@mark_h,是的,我想验证发送电子邮件的请求是否正确提出。我如何编码? –

回答

0
$mock = Mockery::mock('Swift_Mailer'); 
$this->app['mailer']->setSwiftMailer($mock); 
$mock->shouldReceive('send')->once() 
    ->andReturnUsing(function($msg) { 
     $this->assertEquals('My subject', $msg->getSubject()); 
     $this->assertEquals('[email protected]', $msg->getTo()); 
     $this->assertContains('Some string', $msg->getBody()); 
    }); 

你可以看到这一点: Laravel unit testing emails

+0

感谢您的回复。有了这个代码snipset,运行testcase时,它有一个错误:“Mockery \ Exception \ InvalidCountException:来自Mockery_0_Illuminate_Support_Testing_Fakes_MailFake的方法send()应该被调用1次,但被调用0次”。 –