Tester les corbeaux

Exercice 5 sur 6 du chapitre 7 · 260 XP · 5 objectifs vérifiés par des tests

Notions abordées : Tests de messagesFile en mémoireWorker

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 :

  1. une réservation met un message en file — et ne fait partir aucun corbeau tout de suite ;
  2. en traitant la file, le corbeau part, avec le bon message ;
  3. un envoi impossible (Sauron) est réessayé puis mis de côté dans la file des échecs ;
  4. 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.