سلام.
من میخوام سیستم ارسال ایمیل رو تو لاراول تست بنویسم براش و این ایمیل درون یک event ای داخل متد handle که داخل listener اون event قرار داره ارسال میشه(البته میدونم بهتره از سیستم notification استفاده کنم اما صرفا تست هستش) متاسفانه تست event درست pass میشه اما جالبه ایمیل رو میگه ارسال نمیشه و خطای زیر رو تو console میده.
The expected [App\Mail\sendEmail] mailable was not queued. Failed asserting that false is true.
که همون پاس نشدن تست هستش اما جالبه همون کد که داخل handle هستش رو میارم مستقیم داخل کنترلر اجرا میکنم بدون event تست pass میشه.اینم بگم که تست اجرا شدن event هم pass میشه و مشکل از event بنده نیست.ممنون میشم کمک کنید.
کدای تست :
public function testCanTestEventTest()
{
Event::fake();
Mail::fake();
$data = [
'email' => 'mohammadeng3731@gmail.com',
'name' => 'mohammad',
'password' => bcrypt('mohammadeng'),
'_token' => csrf_token()
];
$this->post('/', $data)
->assertOk();
$this->assertDatabaseHas('users', [
'email' => 'mohammadeng3731@gmail.com'
]);
Event::assertDispatched(function (makeUserEvent $event) use ($data) {
return $event->user->email === $data['email'];
});
Mail::assertSent(function (sendEmail $email) use ($data) {
return $email->user->email == $data['email'];
});
}
کدهای درون کنترلر برای pass شدن :
$user = \App\User::create([
'email' => request()->email,
'name' => request()->name,
'password' => request()->password,
]);
$code = rand(1000000, 10000000);
event(new \App\Events\makeUserEvent($user, $code));
کدهای درون handle:
public function handle(makeUserEvent $event)
{
Mail::to($event->user->email)->send(new sendEmail($event->code,$event->user));
}
constructor فایل ایمیلم :
public function __construct($code,User $user)
{
$this->code = $code;
$this->user=$user;
}
event و listener رو هم به هم وصل کردم درون EventServiceProvider و نگرانی ای بابتش نیست .این رو هم بگم از هیچگونه سیستم صفی استفاده نکردم
@mohsenbostan
@ali.bayat
@MehdiAghighi
@milad
@mohammadeng3731
سلام.
با دو متد زیر هم تست کنید ببنید نتجیه به چه صورت هستش:
Mail::assertQueued
----------------------
Mail::assertNotQueued
@mohsenbostan تست کردم. درست نشد.ایمیلو میبرم داخل event کلا pass نمیشه ولی جالبه خود کد اصلی کار میکنه ایمیل ارسال میشه.
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟