L'article explique comment Zenstruck Foundry a révolutionné les tests dans Symfony en permettant de créer des données de test de manière simplifiée et expressive. Cette bibliothèque utilise des factories pour générer rapidement des données pour les entités Doctrine, supporte Faker pour des données aléatoires réalistes, et intègre des fonctionnalités comme les "stories" pour définir des scénarios de données réutilisables. Foundry est particulièrement utile pour tester des modèles de domaine complexes, y compris les Value Objects et les Aggregates en Domain-Driven Design (DDD), en simulant des interactions réalistes sans la complexité de gérer les données sous-jacentes
.
L'auteur se place dans le contexte d'une application Symfony avec des tests PHPUnit et en fournissant des jeux de données via Foundry. Il montre l'utilisation du trait ClockAwareTrait et composant Clock. Enfin, il rappelle que PHP-FIG a proposé la PSR-20 Clock qui dispose de plusieurs implémentations, dont le composant Clock.
L'article compare les tests unitaires au jeu Cluedo, où chaque ligne de code est un suspect potentiel. En utilisant PHPUnit, les développeurs peuvent identifier les bugs comme des crimes à résoudre. L'article explique comment les tests, notamment avec PHP 8.4, permettent de vérifier chaque combinaison possible pour éviter les erreurs en production. Le Test-Driven Development (TDD) est présenté comme une méthode préventive, où les tests sont écrits avant le code pour anticiper les problèmes. L'article souligne l'importance des mocks et des doublures pour simuler les dépendances externes et assure que les tests sont essentiels pour maintenir la qualité du code et dormir tranquille.
Une série de 3 articles sur pytest, le framework de test Python de référence
Tout est dans le titre
Tout est dans le titre
Un excellent article sur l'usage des différentes doublures de test : mocks, spys, stubs, fakes et dummies
pour rappel, DBT est présenté https://blog.ippon.fr/2022/01/07/testez-votre-code-sql-avec-dbt/
Pour résumer, lorsqu'un test échoue, toutes les infos nécessaires doivent être disponibles dans le message d'échec
Rappel : DBT fait partie des ELT (extract, load & transform), notamment pour le "T" - cf https://blog.ippon.fr/2020/10/23/decouvrez-dbt/
DBT 1.8 supportera nativement les tests unitaires de modèles - l'auteur montre comment les mettre en place en utilisant le TDD
L''article montre comment rendre les tests moins sensibles aux détails d'implémentation
Tout est dans le titre
Un conseil pour les tests unitaires : avoir des tests/assertions au scope le plus restreint possible pour être moins sensible au changement
Tout est dans le titre
Tout est dans le titre
Tout est dans le titre
Cet article fait partie de ceux listés dans https://schlitt.info/blog/0784_best_of_posts_for_engineers.html
L'auteur explique pourquoi il faut se débarrasser des appels statiques (classes difficilement testables unitairement) et comment faire (injection de dépendances)
Tout est dans le titre
Tout est dans le titre
L'auteur conclut par une série de bonnes pratiques