如何在功能测试中测试电子邮件是否已发送
编辑本页警告:您正在浏览的文档欧宝官网下载appob娱乐下载Symfony 3.4,现已不再维护。
读本页的更新版本用于Syob娱乐下载mfony 6.2(当前稳定版本)。
如何在功能测试中测试电子邮件是否已发送
使用Symfony发送电子邮件非常简单,ob娱乐下载这要感谢SwiftmailerBundle,它利用了斯威夫特梅勒图书馆。
为了功能测试电子邮件是否已发送,甚至断言电子邮件的主题、内容或任何其他标题,您可以使用Symfob娱乐下载ony Profiler.
从一个发送电子邮件的控制器动作开始:
12 3 4 5 6 7 8 9 10 11 12
公共函数sendEmailAction($的名字, \ Swift_Mailer$梅勒){$消息= (新\ Swift_Message (“你好邮件”))->setFrom (“send@example.com”)->该太空站(“recipient@example.com”)->setBody (“你应该从侧写师那里看到我!”);$梅勒->发送($消息);返回$这->呈现(…);}
在功能测试中,使用swiftmailer
在分析器上的Collector来获取关于前一个请求中发送的消息的信息:
12 34 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
/ /测试/ AppBundle /控制器/ MailControllerTest.php名称空间测试\AppBundle\控制器;使用ob娱乐下载\包\FrameworkBundle\测试\WebTestCase;类MailControllerTest扩展WebTestCase{公共函数testMailIsSentAndContentIsOk(){$客户端=静态::createClient ();//为下一个请求启用分析器(如果分析器不可用,它什么都不做)$客户端->enableProfiler ();$履带=$客户端->请求(“职位”,上面的/道路/ / /行动”);$mailCollector=$客户端->getProfile ()->getCollector (“swiftmailer”);//检查电子邮件是否发送$这->assertSame (1,$mailCollector->getMessageCount ());$collectedMessages=$mailCollector->getMessages ();$消息=$collectedMessages[0];//断言邮件数据$这->assertInstanceOf (“Swift_Message”,$消息);$这->assertSame (“你好邮件”,$消息->getSubject ());$这->assertSame (“send@example.com”、关键($消息->getFrom ()));$这->assertSame (“recipient@example.com”、关键($消息->文字()));$这->assertSame (“你应该从侧写师那里看到我!”,$消息->getBody ());}}
故障排除
问题:收集器对象是零
电子邮件收集器仅在启用剖析器并收集信息时可用,如中所述如何在功能测试中使用分析器.
问题:收集器不包含电子邮件
如果在发送电子邮件之后执行重定向(例如,当您在处理表单之后发送电子邮件,在重定向到另一个页面之前发送电子邮件),请确保测试客户端没有遵循重定向,如中所述测试.否则,收集器将包含重定向页面的信息,电子邮件将无法访问。
此工作,包括代码示例,是根据创作共用BY-SA 3.0许可证。