gpt4 book ai didi

php - Laravel 5.4 断言邮件发送不工作

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:46:29 25 4
gpt4 key购买 nike

我正在尝试断言使用 Laravel 5.4 发送的邮件是假的。

我的测试代码是这样的:

public function setUp()
{
parent::setUp();

$this->admin = create(User::class, [
'is_admin' => true,
]);

$this->faker = Factory::create();
}

/** @test */
public function only_super_admin_can_create_admin()
{
$admin = [
'name' => $this->faker->name,
'email' => $this->faker->email,
];

Mail::fake();

$this->signIn($this->admin)
->post('/admins', $admin)
->assertRedirect('/admins');

Mail::assertSent(NewUser::class, function ($mail) use ($admin) {
dd($mail);
// return $mail->hasTo($admin['email']);
});

$this->assertDatabaseHas('users', $admin);
}

$mail 被转储时,我得到以下信息:

App\Mail\NewUser {#722
#user: App\Models\User {#726
#fillable: array:6 [
0 => "name"
1 => "email"
2 => "password"
3 => "role"
4 => "is_admin"
5 => "id"
]
#hidden: array:2 [
0 => "password"
1 => "remember_token"
]
#connection: "testing"
#table: null
#primaryKey: "id"
#keyType: "int"
+incrementing: true
#with: []
#withCount: []
#perPage: 15
+exists: true
+wasRecentlyCreated: true
#attributes: array:7 [
"name" => "Dave Ortiz"
"email" => "prosacco.dejuan@gmail.com"
"password" => "$2y$10$OGiQJJ/HCOIlbAl/t6tbpuz4WLQenLRVZgFPN/0e0P.3Ft9542OW2"
"is_admin" => true
"updated_at" => "2017-06-03 11:06:56"
"created_at" => "2017-06-03 11:06:56"
"id" => 2
]
#original: array:7 [
"name" => "Dave Ortiz"
"email" => "prosacco.dejuan@gmail.com"
"password" => "$2y$10$OGiQJJ/HCOIlbAl/t6tbpuz4WLQenLRVZgFPN/0e0P.3Ft9542OW2"
"is_admin" => true
"updated_at" => "2017-06-03 11:06:56"
"created_at" => "2017-06-03 11:06:56"
"id" => 2
]
#casts: []
#dates: []
#dateFormat: null
#appends: []
#events: []
#observables: []
#relations: []
#touches: []
+timestamps: true
#visible: []
#guarded: array:1 [
0 => "*"
]
#rememberTokenName: "remember_token"
}
#password: "ogDt9X87fM"
+from: []
+to: []
+cc: []
+bcc: []
+replyTo: []
+subject: null
#markdown: null
+view: null
+textView: null
+viewData: []
+attachments: []
+rawAttachments: []
+callbacks: []
+connection: null
+queue: null
+delay: null
}

如您所见,它在 to 数组中没有显示任何内容,这意味着当我断言邮件是使用 hasTo() 发送时它失败了:

1) Tests\Feature\SuperAdminTest::only_super_admin_can_create_admin
The expected [App\Mail\NewUser] mailable was not sent.
Failed asserting that false is true.

我的 Controller 存储用户如下:

public function store(StoreUserRequest $request)
{
$user = $request->storeUser(null, null, null, true);
return redirect('/admins');
}

StoreUserRequest方法如下:

public function storeUser($name = null, $email = null, $password = null, $admin = false)
{
$password = $password ?: str_random(10);
$user = User::create([
'name' => ($name) ?: $this->name,
'email' => ($email) ?: $this->email,
'password' => bcrypt($password),
'is_admin' => $admin,
]);

Mail::send(new NewUser($user, $password));

return $user;
}

实际的 NewUser 可邮寄如下:

class NewUser extends Mailable
{
use Queueable, SerializesModels;

protected $user;

protected $password;

/**
* Create a new message instance.
*
* @param $user
* @param $password
*/
public function __construct($user, $password)
{
$this->user = $user;
$this->password = $password;
}

/**
* Build the message.
*
* @return $this
*/
public function build()
{
return $this->view('emails.users.' . strtolower(($this->user->is_admin) ? 'Admin' : 'Client'))
->with('user', $this->user)
->with('password', $this->password)
->to($this->user->email, $this->user->name)
->subject('[' . $this->user->name . '] Your New ' . ($this->user->is_admin ? 'Admin' : 'Client') . ' Account');
}
}

现在更奇怪的是,当我在应用程序上手动创建用户时,电子邮件将会到达! Email Arrives

有没有人知道为什么这行不通?

最佳答案

您应该将 附加到 邮件之外,就像在 documentation 中一样:

StoreUserRequest

Mail::to($user->email)->send(new NewUser($user, $password));

新用户

public function build() {
$account_type = $this->user->is_admin ? 'Admin' : 'Client';
return $this->view('emails.users.' . strtolower($account_type)
->with([
'user' => $this->user,
'password' => $this->password
])
->subject("[${this->user->name}] Your New ${account_type} Account");
}

关于php - Laravel 5.4 断言邮件发送不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44343313/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com