alphametric/mail-assertions

此包已被弃用,不再维护。未建议替代包。

一个将常用邮件断言直接提供给Laravel测试用例的包。

v2.0 2019-05-01 21:12 UTC

This package is auto-updated.

Last update: 2020-02-17 10:07:55 UTC


README

此包向您的Laravel TestCase中的$this添加了一组基于电子邮件的断言。通过使用此包,您不再需要导入Mail外观并配置它使用假实现,也不需要导入您的可邮寄文件/通知。相反,您可以直接链接您需要的任何断言,无需任何设置。

安装

您可以通过composer安装此包

composer require alphametric/mail-assertions

安装包后,您需要将MailAssertions特质添加到Laravel的TestCase类中

namespace Tests;

use Alphametric\Assertions\MailAssertions;
use Illuminate\Foundation\Testing\TestCase as BaseTestCase;

abstract class TestCase extends BaseTestCase
{
    use CreatesApplication, MailAssertions;
}

配置

如果您还没有这样做,您应该配置您的应用程序的phpunit.xml文件以使用邮件日志驱动程序

<php>
    <env name="MAIL_DRIVER" value="log"/>
</php>

其他邮件驱动可能可以正常工作,但不受支持,并且未经过测试。

用法

正如您所期望的,您可以直接调用包含的断言

$this -> assertEmailSent();

由于所有断言都返回类实例,因此您还可以链接多个断言

$this -> assertEmailSent()
      -> assertEmailFrom("john@example.com");

以下断言可用于使用

名称 描述
assertEmailAttachment 验证电子邮件是否包含附件
assertEmailAttachmentCount 验证电子邮件是否包含指定数量的附件
assertEmailAttachmentExtension 验证电子邮件是否包含具有给定文件扩展名的附件
assertEmailAttachmentFilename 验证电子邮件是否包含具有给定文件名的附件
assertEmailAttachmentSize 验证电子邮件是否包含具有给定文件大小的附件(可选使用多字节编码)
assertEmailBcc 验证电子邮件的BCC字段是否与给定字符串匹配
assertEmailBodyContains 验证电子邮件正文是否包含给定字符串
assertEmailBodyDoesNotContain 验证电子邮件正文是否不包含给定字符串
assertEmailBodyEquals 验证电子邮件正文是否与给定字符串匹配
assertEmailCc 验证电子邮件的CC字段是否与给定字符串匹配
assertEmailContentType 验证电子邮件是否使用指定的内容类型
assertEmailCount 验证发送的电子邮件数量是否与给定整数匹配
assertEmailFrom 验证电子邮件的From字段是否与给定字符串匹配
assertEmailPriority 验证电子邮件是否有给定优先级
assertEmailNotSent 验证是否未发送电子邮件
assertEmailReplyTo 验证电子邮件的ReplyTo字段是否与给定字符串匹配
assertEmailSent 验证是否已发送电子邮件
assertEmailSubjectContains 验证电子邮件的主题是否包含给定字符串
assertEmailSubjectDoesNotContain 验证电子邮件的主题是否不包含给定字符串
assertEmailSubjectEquals 验证电子邮件的主题是否与给定字符串匹配
assertEmailTo 验证电子邮件的To字段是否与给定字符串匹配

清空栈

由于测试可能导致发送多封邮件,该软件包使用栈(实际上只是一个数组)的概念来存储所有待发送的邮件。

有时,在执行更多代码(这将导致发送新邮件/需要测试新邮件)之前,可能需要执行一个或多个断言,然后清空栈。

对于这些场景,您可以调用 flushEmail() 方法。

特定邮件

有时,可能需要对栈中的特定邮件执行一个或多个断言。您可以通过调用 getEmailByIndex() 方法,并将结果作为任何断言方法的第二个参数来实现这一点。

$this -> assertEmailFrom("john@example.com", $this -> getEmailByIndex(3));

如果不提供第二个参数,则断言将作用于栈中最新的邮件。

测试

您可以通过在根包目录中使用以下命令来运行测试套件

composer test

变更日志

V1.0 - 初次发布。

许可证

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