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

时间:2019-11-06 18:24:35

标签: laravel testing tdd

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

1 个答案:

答案 0 :(得分:0)

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

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