Qu’est-ce que les tests
Les tests sont un mécanisme automatisé pour vérifier que le code fonctionne comme prévu. En écrivant des tests, vous pouvez rapidement vérifier que les modifications ou les ajouts n’ont pas cassé les comportements existants. Ils permettent aussi à toute l’équipe de modifier et de revoir le code avec sérénité. Laravel intègre le support des tests dès l’installation, et vous pouvez utiliser Pest comme PHPUnit. Une nouvelle installation contient déjà un fichierphpunit.xml et un répertoire tests/.
Structure du répertoire tests/
Feature/— Contient les tests fonctionnels, qui simulent des requêtes HTTP et couvrent de larges parties du système : plusieurs objets qui collaborent, endpoints d’API. La plupart de vos tests iront ici.Unit/— Contient les tests unitaires, ciblant une classe ou une méthode. L’application Laravel n’est pas amorcée : pas d’accès à la base ni aux fonctionnalités du framework.
Créer un test
Utilisezmake:test.
tests/Feature/TodoTest.php est généré.
Exécuter les tests
Utilisezphp artisan test.
vendor/bin/pest ou vendor/bin/phpunit donnent le même résultat, mais php artisan test offre une sortie plus lisible.
Pour cibler une suite ou d’autres options :
Écrire un test simple
Exemples d’assertions basiques.Assertions courantes
Tests HTTP
Les tests HTTP de Laravel simulent les requêtes vers les routes sans démarrer un vrai serveur. Une fonctionnalité puissante à utiliser dans les tests deFeature/.
Tester l’affichage d’une page
get() envoie une requête GET, puis on vérifie la réponse.
Exemple : tests HTTP pour une app ToDo
Avec un modèleTodo, testons les opérations CRUD.
Assertions courantes sur la réponse
Le trait
RefreshDatabase réinitialise la base après chaque test. Utile pour éviter que les tests interfèrent entre eux.Environnement de test
Configuration phpunit.xml
phpunit.xml à la racine configure l’environnement de test.
Par défaut, session et cache utilisent le driver array, donc rien n’est persisté pendant les tests.
Fichier .env.testing
Un fichier .env.testing à la racine remplace .env pendant les tests.
Utile pour isoler la base ou les services externes utilisés en test.
Exécution parallèle
Quand le nombre de tests augmente, le temps d’exécution grandit. L’option--parallel lance plusieurs processus en parallèle pour réduire ce temps.
Installez d’abord le package brianium/paratest.
--parallel.
--processes.
Prochaines étapes
Tests HTTP
Simulez des requêtes, testez avec authentification, faites des assertions JSON…