Qu’est-ce que Pest
Pest est un framework de test construit au-dessus de PHPUnit et adopté par défaut dans tout nouveau projet depuis Laravel 11. Il reprend l’ensemble des assertions de PHPUnit tout en offrant une syntaxe concise basée sur des closures. Principales différences avec PHPUnit :Les tests Pest étant exécutés par PHPUnit, ils cohabitent sans problème avec des tests PHPUnit existants. Lancez-les avec
php artisan test ou vendor/bin/pest.Quand utiliser describe / it / test
test()
La définition la plus simple : le nom du test sert directement de description.
it()
Permet une écriture proche du langage naturel, sous forme « it should… ».
describe()
Regroupe des tests apparentés. Utile pour partager un beforeEach() ou structurer logiquement un fichier.
Expectation API
expect() est la syntaxe d’assertion propre à Pest. Vous pouvez enchaîner des conditions via des appels de méthodes.
Assertions de base
Assertions sur des modèles
Chaîne and()
Vérifier chaque élément d’un tableau avec each()
Tests paramétrés avec les datasets
Pour exécuter la même logique avec plusieurs entrées, utilisezdataset() ou with() en ligne.
Dataset en ligne
Datasets nommés
Définissez les datasets dans le répertoiretests/Datasets.
Dataset dynamique avec closure
Tests unitaires avec Mockery
Mocker un service
Espion (spy)
Contrairement à un mock, un spy exécute l’implémentation tout en enregistrant les appels.Mock partiel
Mocker certaines méthodes et laisser les autres utiliser l’implémentation réelle.Tests d’appels d’API externes via HTTP fake
Http::fake() permet de stubber les réponses sans envoyer de vraie requête HTTP.
Fake de base
Tester une réponse d’erreur
Simuler une panne réseau
Fake d’événements, e-mails et notifications
Event::fake()
Mail::fake()
Notification::fake()
Tester une commande Artisan
Tester une commande interactive
RefreshDatabase et LazilyRefreshDatabase
RefreshDatabase
Rollback la base après chaque test pour garantir un état propre. Les migrations sont exécutées au démarrage de la suite de tests.
LazilyRefreshDatabase
Là où RefreshDatabase prépare les migrations pour tous les tests, LazilyRefreshDatabase diffère les migrations jusqu’à ce qu’un test modifie effectivement la base. Cela accélère les suites où de nombreux tests ne touchent pas à la base.
Mesure de la couverture de code
Xdebug ou PCOV est requis.Pages associées
Introduction aux tests
Découvrez la façon d’écrire des tests avec Laravel et l’utilisation de
php artisan test.