我正在使用Laravel附带的auth . 我正在测试您放入电子邮件的页面,当您点击提交按钮时,密码重置电子邮件将发送到您的电子邮件 .
我手动执行密码重置电子邮件 . 但我创建了此测试以确保密码重置电子邮件已发送但它无法正常工作 .
有1次失败:1)预期的[Illuminate \ Foundation \ Auth \ ResetPassword] mailable没有排队 . 声明false为真的失败 .
我遵循以下代码:
https://github.com/JeffreyWay/council/blob/master/tests/Feature/Auth/RegisterUserTest.php
<?php
namespace Tests\Controllers\Unit;
use Tests\TestCase;
use Illuminate\Support\Facades\Mail;
use Illuminate\Auth\Notifications\ResetPassword;
use Illuminate\Foundation\Testing\RefreshDatabase;
class ResetPasswordEmailTest extends TestCase
{
use RefreshDatabase;
public function setUp()
{
parent::setUp();
Mail::fake();
}
/** @test */
public function does_send_password_reset_email()
{
$user = factory('App\User')->create();
$this->post(route('password.email'), ['email' => $user->email])
Mail::assertQueued(ResetPassword::class);
}
}
2 回答
您收到该错误,因为密码重置电子邮件是
Notification
而不是Mailable
. 请注意,您还必须保存假用户,以便密码重置代码可以在数据库中查找它 . 对我有用的是这样的:您还可以使用以下内容检查电子邮件的内容:
您可以通过控制器执行此操作 . 这是一个例子:
它会将带有令牌的链接发送到您的电子邮件中 . 然后,当您想使用该链接时,您可以尝试这样做:
路线应该是:
希望这有帮助,祝你有个美好的一天 .