Gorm a fait les comptes. Depuis l'ouverture du site, Pipin a « amélioré » la taverne quatre fois, et quatre fois tout était cassé. Chaque fois, on ne l'a su que parce qu'un client se plaignait.
« Plus jamais ça ! » Désormais, des tests automatisés montent la garde : à chaque modification, ils vérifient que la taverne fonctionne encore.
Votre mission
Écrivez les tests de la page de réservation, dans tests/Taverne/ReservationTest.php :
- la page
/reservations'affiche, avec son formulaire et « Table pour 2 aventuriers » par défaut ; - une réservation valide (Gimli, 3 aventuriers) redirige vers
/reservation, puis affiche « Table réservée pour Gimli (3 aventuriers) ! » ; - une réservation pour 13 aventuriers est refusée (422), avec un message d'erreur.
Rien à changer dans l'application : cette fois, vous écrivez seulement les tests.
Comment vos tests sont notés
Vos tests doivent d'abord passer sur la taverne telle qu'elle est. Ensuite, nous glissons en cachette des bugs dans l'application : ce sont les mutants 🐛. Un bon test échoue quand l'application est cassée. Chaque mutant que vos tests détectent valide un objectif. Un mutant qui passe inaperçu, c'est un test qui manque.
Le détail des mutants détectés et survivants apparaît à la fin de la « Sortie PHPUnit ».
La boîte à outils
$client = static::createClient(); // un navigateur simulé $client->request('GET', '/reservation'); $client->submitForm('Réserver', ['nom' => 'Gimli', 'personnes' => 3]); $client->followRedirect(); $this->assertResponseIsSuccessful(); // 2xx $this->assertResponseStatusCodeSame(422); $this->assertResponseRedirects('/reservation'); $this->assertSelectorExists('form.reservation'); $this->assertSelectorTextContains('.flash', 'Table réservée');