dmoen / mailtrap-test-helper
基于PHPUnit的邮件提交测试助手库,通过Mailtrap进行测试
v1.2.0
2017-10-06 20:07 UTC
Requires
- php: >=5.5
- guzzlehttp/guzzle: ^6.3
- phpunit/phpunit: ^6.3
Requires (Dev)
- phpmailer/phpmailer: ^6.0
- vlucas/phpdotenv: ^2.4
This package is not auto-updated.
Last update: 2024-09-29 03:57:57 UTC
README
基于PHPUnit的邮件提交测试助手库,通过Mailtrap进行测试。
安装
此包可以通过Composer安装
composer require dmoen/mailtrap-test-helper --dev
用法
使用api key和收件箱id创建MailTrapInbox实例
$inbox = new MailTrapInbox('api_key', 'inbox_id');
示例使用PHPUnit测试用例。在每个测试之前,应该清理收件箱
private $inbox; public function setUp() { parent::setUp(); $this->inbox = new MailTrapInbox('api_key', 'inbox_id')); $this->inbox->deleteAllMessages(); }
简单的收件箱测试
测试收件箱是否有任何消息
$inbox->assertHasMails();
测试收件箱是否有来自特定地址的消息
$inbox->assertHasMailFrom("sender@example.com");
带有名称
$inbox->assertHasMailFrom("sender@example.com", "Sender Sendersson");
测试收件箱是否有发送到特定地址的消息
$inbox->assertHasMailFor("reciever@example.com");
带有名称
$inbox->assertHasMailFor("reciever@example.com", "Receiver Receiversson");
测试收件箱是否有特定主题的消息
$inbox->assertHasMailWithSubject('Lorem subject');
测试收件箱是否有特定正文的消息
$inbox->assertHasMailWithHtmlContent('<b>Lorem ipsum sit amet</b>'); $inbox->assertHasMailWithTextContent('Lorem ipsum sit amet');
针对特定电子邮件的更高级的测试
检索收件箱中的特定消息
$inbox->getLastMessage() $inbox->getFirstMessage()
或者如果你知道收件箱中的特定索引
$message = $inbox->getMessage(2);
你也可以使用条件搜索收件箱中的特定唯一消息
$message = $inbox->findUnique(function($message){ return $message->to_email == "receiver@example.com"; });
或者通过条件检索所有消息的数组
$messages = $inbox->fetchAllMessages();
$messages = $inbox->findMessages(function($message){ return $message->to_email == "receiver@example.com"; });
传递给闭包的消息实例具有从Mailtrap API检索的所有属性:http://docs.mailtrap.apiary.io/#reference/message/apiv1inboxesinboxidmessagesid/get
然后可以使用一系列测试对消息进行测试
$message->assertIsFrom("me@railsware.com", "Private Person") ->assertIsFor("test@railsware.com", "A Test User") ->assertHasSubject("SMTP e-mail test") ->assertHasTextContent("This is a test e-mail message") ->assertHasHtmlContent("<b>Lorem ipsum sit amet.</b>");