Ad

Laravel 5.6 Testing Notification::assertSentTo() Not Found

- 1 answer

Struggling since multiple days to get Notification::assertSentTo() method working in my feature test of reset password emails in a Laravel 5.6 app, yet receiving ongoing failures with following code:

namespace Tests\Feature;

use Tests\TestCase;
use Illuminate\Auth\Notifications\ResetPassword;
use Illuminate\Support\Facades\Notification;
use Illuminate\Foundation\Testing\WithFaker;
use Illuminate\Foundation\Testing\RefreshDatabase;

class UserPasswordResetTest extends TestCase
{
   public function test_submit_password_reset_request()
   {
      $user = factory("App\User")->create();

      $this->followingRedirects()
         ->from(route('password.request'))
         ->post(route('password.email'), [ "email" => $user->email ]);

      Notification::assertSentTo($user, ResetPassword::class);
   }

}

I have tried several ideas including to use Illuminate\Support\Testing\Fakes\NotificationFake directly in the use list. In any attempt the tests keep failing with

Error: Call to undefined method Illuminate\Notifications\Channels\MailChannel::assertSentTo()

Looking forward to any hints helping towards a succesful test. Regards & take care!

Ad

Answer

It seems like you are missing a Notification::fake(); For the correct fake notification driver to be used.

Notification::fake();

$this->followingRedirects()
...
Ad
source: stackoverflow.com
Ad