kirchbaum-development/mail-intercept

用于拦截从 Laravel 发送的电子邮件的测试包

v0.5.0 2024-03-18 18:51 UTC

README

Mail Intercept banner

Laravel Mail Intercept

拦截 Laravel 发送邮件的测试包

Latest Version on Packagist Total Downloads Codacy Badge Actions Status

此测试套件在邮件发送之前拦截 Laravel Mail,允许对实际邮件本身进行各种断言。

这里没有伪造邮件。您可以检查实际邮件,确保发送的是您想要的精确内容!

要求

请注意:如果您正在使用 v0.2.x,请参阅该版本的 文档

安装

composer require kirschbaum-development/mail-intercept --dev

用法

接下来,您可以在测试类中使用 KirschbaumDevelopment\MailIntercept\WithMailInterceptor 特性

namespace Tests;

use App\Mail\TestMail;
use Illuminate\Support\Facades\Mail;
use Illuminate\Foundation\Testing\WithFaker;
use KirschbaumDevelopment\MailIntercept\WithMailInterceptor;

class MailTest extends TestCase
{
    use WithFaker;
    use WithMailInterceptor;

    public function testMail()
    {
        $this->interceptMail();

        $email = $this->faker->email;

        Mail::to($email)->send(new TestMail());

        $interceptedMail = $this->interceptedMail()->first();

        $interceptedMail->assertSentTo($email);
    }
}

就是这样!很简单,对吧?!

访问断言有两种方式。第一种是直接在每个拦截的电子邮件上的流畅语法。

$interceptedMail->assertSentTo($email);

另一种方式(较老的方式)是使用 WithMailInterceptor 特性提供的断言方法。使用这些方法是可以的,但编写起来不够简洁。

$this->assertMailSentTo($email, $interceptedEmail);

这两种断言做的事情完全相同,流畅的断言只是更简洁。下面列出了所有可用的断言方法!

测试 API

$this->interceptMail()

此方法必须首先调用,类似于 Mail::fake() 的工作方式。但与邮件伪造不同,邮件没有被伪造,而是被拦截。

$this->interceptedMail()

这应该在发送邮件后,但在断言之前调用,否则您将没有电子邮件可操作。它返回一个电子邮件的 Collection,您可以自由使用集合的所有方法。

流畅断言方法

断言方法

您应将 interceptedMail() 集合中的每个项目用作所有断言的邮件对象。

如果您正在注入自己的头部或需要访问电子邮件中的其他头部,请使用此断言来验证它们是否存在以及是否设置正确。这些断言需要头部名称和编译后的电子邮件。

其他断言

由于 $this->interceptedMail() 返回一个 AssertableMessage 对象的集合。您可以自由地使用任何可用的方法来分析和使用这些对象,这些方法来自 Symfony 的电子邮件 API。有关更详细的信息,请参阅 Symfony 电子邮件文档

变更日志

有关最近更改的信息,请参阅 变更日志

贡献

有关详细信息,请参阅 贡献

安全性

如果您发现任何安全问题,请通过电子邮件发送至 brandon@kirschbaumdevelopment.comnathan@kirschbaumdevelopment.com,而不是使用问题跟踪器。

鸣谢

赞助

本软件包的开发由Kirschbaum开发集团赞助,该集团是一家以解决问题、团队建设和社区为中心的驱动型公司。了解更多 关于我们加入我们

许可证

MIT许可证(MIT)。更多信息请参阅 许可证文件