3

J'essaie de tester les mails dans les tests du navigateur dans Laravel 5.4.Mocking mail avec Laravel 5.4 (crépuscule)

Je possède ce code dans une classe InvitationTest dans une fonction de rappel browse:

\Mail::fake(); 

$browser->visit('projects') 
    ->press('etc.') 

\Mail::assertSent(InvitationMail::class, function ($mail) use ($project) { 
    return $mail->invitation->project->id == $project->id; 
}); 

Je peux voir le courrier a été envoyé dans les journaux:

[06/04/2017 15:36 : 10] local.INFO: Invitation xxxx-yyyy-zzz-aa-bb a commencé
[06/04/2017 15:36:10] local.DEBUG: message-ID: <[email protected]>
date de : Jeu., 06 avr. 2017 15:36:10 0200
Objet: Bonjour tout le monde :)

Mais en cours d'exécution php artisan dusk je suis arrivé:

1) Tests \ Browser \ InvitationTest :: testCreateInvitation
Le attendu [App \ Mail \ InvitationMail] n'a pas été envoyé.
Echec de l'affirmation que false est vrai.

Le courrier est mis en attente, mais, dans mon .env.dusk.local j'ai mis la file d'attente pour la synchronisation (et le courrier pour vous connecter):

QUEUE_DRIVER=sync 
MAIL_DRIVER=log 

Donc, tout doit être bien. Est-ce que je fais quelque chose de mal? Pourquoi le crépuscule dit que le courrier n'a pas été envoyé? Remarque importante: Le courrier n'est pas envoyé directement via le contrôleur, mais un travail retardé est créé et ce travail envoie le courrier. Le travail retardé est envoyé dans le passé, donc il ne peut pas avoir un impact. Pour être clair: un contrôleur distribue un travail, puis ce travail envoie plusieurs courriers.

+0

https://hackernoon.com/asserting-jobs-in-queue-with-laravel-dusk-adb03654ca43 –

Répondre