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

问题描述 投票:1回答:1

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

laravel testing tdd
1个回答
0
投票

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

Mail::assertSent(OrderShipped::class, function ($mail) {
    return $mail->subject === 'your subject' && 
        Str::contains($mail->render()->render(), 'Welcome to my website');
});
© www.soinside.com 2019 - 2024. All rights reserved.