Introduction
Laravel intègre des outils pour tester en toute sécurité et rapidement les fonctionnalités reposant sur la base : trait de réinitialisation, factories, seeders, assertions dédiées. Combinés, ils produisent des tests robustes.
Commencez par RefreshDatabase : dans la plupart des cas, il assure l’isolation plus vite qu’une réinitialisation complète.
Réinitialiser la base entre chaque test
Utilisez le trait Laravel pour empêcher les données d’un test d’influencer le suivant.
RefreshDatabase vérifie si le schéma est à jour. Si oui, il enveloppe la base dans une transaction ; sinon, il migre d’abord.
Pour une réinitialisation complète à chaque test, utilisez :
Model factories
Utilisez les factories pour générer des modèles rapidement.
Voir Factories Eloquent pour les détails.
Exécuter les seeders
Utilisez seed() pour peupler la base. Sans argument, il exécute DatabaseSeeder ; avec un argument, un seeder ou tableau spécifique.
Pour seeder automatiquement dans tous les tests utilisant RefreshDatabase, ajoutez l’attribut #[Seed] à la classe de base.
Pour un seeder précis, utilisez #[Seeder(...)].
Assertions disponibles
Laravel fournit des assertions dédiées à la base, utilisables avec Pest et PHPUnit.
assertDatabaseCount
Vérifie le nombre d’enregistrements dans une table.
assertDatabaseEmpty
Vérifie qu’une table est vide.
assertDatabaseHas
Vérifie qu’un enregistrement correspondant existe.
assertDatabaseMissing
Vérifie qu’aucun enregistrement ne correspond.
assertSoftDeleted
Vérifie qu’un modèle Eloquent est soft-deleted.
assertNotSoftDeleted
Vérifie qu’un modèle Eloquent n’est pas soft-deleted.
assertModelExists
Vérifie qu’un modèle (ou une collection) existe en base.
assertModelMissing
Vérifie qu’un modèle (ou une collection) n’existe pas en base.
expectsDatabaseQueryCount
Fixe précisément le nombre total de requêtes DB à exécuter. Échec si divergence.
Dernière modification le 13 juillet 2026