如何在Laravel中编写用于检查邮件正文的测试用例



我有一个控制器,可以在其中完成某些任务,并具有向用户发送邮件的功能。所以我们想为此编写测试用例,因为我们正在遵循TDD方法,并且我们决定不为此目的使用mock。相反,我们使用Mail::fake()。在我的控制器中,我对邮件进行排队,并使用可邮寄类来呈现我的视图,并将数据传递给该可邮寄类。因此,我无法检查(在我的测试用例中(该可邮寄类的邮件正文或主题。关于如何编写用于检查邮件正文的测试用例或任何其他最佳实践,有什么想法吗?

Laravel具有断言发送了正确邮件的功能。你可以通过访问主题属性来获取主题,如果你将电子邮件呈现到一个视图中并呈现该视图,你将获得一个字符串形式的电子邮件,然后对其进行一个包含调用的字符串。

Mail::assertSent(OrderShipped::class, function ($mail) {
return $mail->subject === 'your subject' && 
Str::contains($mail->render()->render(), 'Welcome to my website');
});

最新更新