La volière marche. Reste à s'assurer qu'elle marchera encore dans six mois, quand Pipin aura « rangé » la configuration.
Tester des messages demande un peu de méthode : le travail ne se fait plus pendant la requête. Un test qui regarde seulement le résultat final ne verrait pas la différence entre « traité en arrière-plan » et « traité tout de suite ».
Votre mission
Dans tests/Taverne/CorbeauxTest.php, écrivez les tests de la chaîne complète :
- une réservation met un message en file — et ne fait partir aucun corbeau tout de suite ;
- en traitant la file, le corbeau part, avec le bon message ;
- un envoi impossible (Sauron) est réessayé puis mis de côté dans la file des échecs ;
- le résumé du soir ne compte que les tables de demain.
Votre boîte à outils
Le trait FileDeMessages, déjà fourni :
$this->messagesEnFile(); // les messages qui attendent (transport « async ») $this->messagesEnFile('echoues'); // ceux qui ont été mis de côté $this->consommerLaFile(); // traite la file, et renvoie le nombre de messages traités $this->lancerLeWorker(); // un vrai worker : réessais et file des échecs compris
consommerLaFile() suffit pour le cas normal. Pour observer un échec, il faut un vrai worker : ce sont ses réessais qui finissent par mettre le message de côté.
La notation
Comme au chapitre précédent : vos tests doivent passer sur la volière telle qu'elle est, puis échouer sur chacun des quatre mutants 🐛. Un mutant qui survit, c'est un test qui manque.