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 命令,即可测试用户注册发送邮件功能。
创造与魔法 安卓版v1.0.0750
创造与魔法是一款开放世界手游,在游戏中玩家可探索这个奇妙的世
创造与魔法修改版 最新版v1.0.0750
创造与魔法无限点券版是款探索冒险游戏,该款游戏的操作还是蛮自
战争与文明官方版本 安卓版v1.7.16
战争与文明是一款由上海邮通科技有限公司开发的战争策略游戏,这
迷你世界0元领皮肤无限迷你币版 最新安卓版v1.43.0
迷你世界0元购买皮肤版是这款开放沙盒冒险建造游戏的特殊破解版
创造与魔法无限经验版 安卓版v1.0.0750
创造与魔法无限经验版是款可以改造环境,整个游戏的自由度还是蛮