kirchbaum-development / mail-intercept
用于拦截从 Laravel 发送的电子邮件的测试包
Requires
- php: ^8.0.2|^8.1|^8.2
- illuminate/mail: ^9.2|^10.0|^11.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.7
- orchestra/testbench: ^7.1|^8.0|^9.0
- phpunit/phpunit: ^9.5.10|^10.5
- spatie/ray: ^1.41.1
This package is auto-updated.
Last update: 2024-09-18 20:18:45 UTC
README
Laravel Mail Intercept
拦截 Laravel 发送邮件的测试包
此测试套件在邮件发送之前拦截 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.com 或 nathan@kirschbaumdevelopment.com,而不是使用问题跟踪器。
鸣谢
赞助
本软件包的开发由Kirschbaum开发集团赞助,该集团是一家以解决问题、团队建设和社区为中心的驱动型公司。了解更多 关于我们 或 加入我们!
许可证
MIT许可证(MIT)。更多信息请参阅 许可证文件。