
Je suis parti là bas : @selrahcd.bsky.social Ma formation sur les test automatisés 👉 https://teapawt.net/t.co/XSg6uoWVf0
- Tweets8.9K
- Following1.2K
- Followers644
- Likes428

ALT # Stubbing du temps : Prendre le contrôle du système Maîtriser le temps dans les tests permet d'éviter de les voir échouer aléatoirement en fonction de la date et de l'heure.

ALT ## Le problème avec le temps qui passe Le temps est une dépendance incontrôlable. Il évolue, et ce changement peut faire échouer des tests ou réduire leur pertinence. ```php final class PannaCottaTest extends TestCase { /** * @test */ public function est_consommable_2_jours_après_fabrication(): void { $pannaCotta = unePannaCotta() ->fabriquéeLe(DateFabrication::le(3, 12, 2024)) ->build(); $this->assertTrue($pannaCotta->estConsommable()); } } ``` Si l'implémentation est correcte, ce test va se mettre à échouer à partir du 5 décembre 2024. Pas cool !
![## Assert Vérifiez que le résultat correspond à vos attentes. Est-ce que tout s'est bien passé comme prévu ? ```php $this->assertTrue($burrito->estVégétarien()); $this->assertEquals( ['oeuf', 'salade', 'oignon', 'avocat'], $burrito->ingrédients() ); ```](https://pbs.twimg.com/media/GgNmqtcXQAA970F.jpg?name=small&format=webp)
ALT ## Assert Vérifiez que le résultat correspond à vos attentes. Est-ce que tout s'est bien passé comme prévu ? ```php $this->assertTrue($burrito->estVégétarien()); $this->assertEquals( ['oeuf', 'salade', 'oignon', 'avocat'], $burrito->ingrédients() ); ```
![## Les 3 As On a ainsi une structure que l'on retrouve dans chaque test et qui est interprétable facilement. ```php $burrito = new Burrito(['thon', 'salade', 'oignon', 'avocat']); $burrito->rendreVégétarien(); $this->assertTrue($burrito->estVégétarien()); $this->assertEquals( ['oeuf', 'salade', 'oignon', 'avocat'], $burrito->ingrédients() ); ```](https://pbs.twimg.com/media/GgNmrABWgAAnhdT.jpg?name=small&format=webp)
ALT ## Les 3 As On a ainsi une structure que l'on retrouve dans chaque test et qui est interprétable facilement. ```php $burrito = new Burrito(['thon', 'salade', 'oignon', 'avocat']); $burrito->rendreVégétarien(); $this->assertTrue($burrito->estVégétarien()); $this->assertEquals( ['oeuf', 'salade', 'oignon', 'avocat'], $burrito->ingrédients() ); ```

ALT # Pas de if dans les tests Si seulement on évitait cette chose si simple... Moins de logique, moins d'erreurs.

ALT ## Ah, mais si... mais non ! Avoir des ifs dans les tests en complique la lecture et la compréhension. Lorsque l'on introduit de la logique dans les tests, on augmente les chances qu'ils ne vérifient pas ce que l'on pense vérifier. **Il n'y a pas de tests pour les tests, gardons les faciles à comprendre.**
![Utilisez des commentaires pour séparer les phases Commenter chaque phase aide à bâtir cette habitude. ```php // Arrange $burrito = new Burrito(['thon', 'salade', 'oignon', 'avocat', 'riz']); // Act $burrito->rendreVégétarien(); // Assert $this->assertTrue($burrito->estVégétarien()); $this->assertEquals( ['oeuf', 'salade', 'oignon', 'avocat', 'riz'], $burrito->ingrédients() ); ``` C'est utile au début, mais je vous conseille de vous en passer quand vous êtes prêts.](https://pbs.twimg.com/media/GgNmqPIWUAAmW0z.jpg?name=small&format=webp)
ALT Utilisez des commentaires pour séparer les phases Commenter chaque phase aide à bâtir cette habitude. ```php // Arrange $burrito = new Burrito(['thon', 'salade', 'oignon', 'avocat', 'riz']); // Act $burrito->rendreVégétarien(); // Assert $this->assertTrue($burrito->estVégétarien()); $this->assertEquals( ['oeuf', 'salade', 'oignon', 'avocat', 'riz'], $burrito->ingrédients() ); ``` C'est utile au début, mais je vous conseille de vous en passer quand vous êtes prêts.




![## Arrange Dans cette phase, vous définissez les conditions initiales. Pensez-y comme le « début de l’histoire », la mise en place du « petit monde » dans lequel le test va s'exécuter. ```php $burrito = new Burrito(['thon', 'salade', 'oignon', 'avocat']); ```](https://pbs.twimg.com/media/GgNmqOeXYAA4MBa.jpg?name=small&format=webp)


![## Variation : Fusionner Act & Assert Quand l’action est simple, vous pouvez combiner Act et Assert en une seule ligne pour un test plus concis. ```php $burrito = new Burrito(['thon', 'salade', 'oignon', 'avocat', 'riz']); $this->assertFalse($burrito->estVégétarien()); ```](https://pbs.twimg.com/media/GgNmqdJWUAA9MWB.jpg?name=small&format=webp)










