最新下载
热门教程
- 1
 - 2
 - 3
 - 4
 - 5
 - 6
 - 7
 - 8
 - 9
 - 10
 
Laravel 中利用MailThief实现邮件发送例子
时间:2022-06-25 00:39:59 编辑:袖梨 来源:一聚教程网
MailThief 是 Tighten Co 编写的一个新扩展包,用于在 Laravel 应用中模拟邮件发送,通过该扩展包我们可以在不发送邮件的情况下实现邮件发送测试,这么说可能还是有点绕,下面我们通过一个具体的实例来说明。
假设我们之前为新用户注册成功发送欢迎邮件注册过一个这样的路由:
Route::post('register', function () {
    // 
    Mail::send('emails.welcome', [], function ($m) {
        $email = request('email');
        $m->to($email),
        $m->subject('Welcome to my app!');
        $m->from('[email protected]');
        $m->bcc('[email protected]');
    });
    // 
});
通常这个功能测试很麻烦,需要我们手动注册,如果发送失败又要重新走一遍注册流程,但有了MailThief,一切都将变得简单:
首先,我们需要通过Composer安装该扩展:
composer require tightenco/mailthief
接下来我们通过如下Artisan命令创建测试类:
php artisan make:test RegistrationTest
然后修改测试类方法如下:
use MailThiefFacadesMailThief;
class RegistrationTest extends TestCase{
    public function testNewUserRegistered()
    {
        // 阻止和拦截向外发送邮件, 这一步很重要!
        MailThief::hijack();
        $this->post('register', [
            'name' => 'John Doe',
            'email' => '[email protected]',
            'password' => 'secret',
        ]);
        // 检查邮件是否已发送到指定邮箱
        $this->assertTrue(MailThief::hasMessageFor('[email protected]'));
        // 也可以包含抄送邮箱
        $this->assertTrue(MailThief::hasMessageFor('[email protected]'));
        // 确保邮件主题正确
        $this->assertEquals('欢迎注册Laravel学院!', MailThief::lastMessage()->subject);
        // 确保这封邮件来自正确的发送地址
        // (`from` 可以是个列表,所以我们以集合形式返回)
        $this->assertEquals('[email protected]', MailThief::lastMessage()->from->first());
    }
}
然后在命令行运行 phpunit 命令,即可测试用户注册发送邮件功能。
相关文章
- 我的世界灾厄巡逻队怎么解决 灾厄巡逻队机制详解 11-04
 - 【精选】圣诞节朋友圈最调皮的文案精彩句子汇编115句 11-04
 - 我的世界袭击(Raid)怎么玩 mc袭击机制介绍 11-04
 - 我的世界wiki官网入口 国际与中文站点使用指南 11-04
 - 我的世界Java版最新更新内容是什么 1.21.9正式版内容汇总 11-04
 - 逃离鸭科夫农场镇嫌疑人任务怎么做 嫌疑人任务流程 11-04