Skip to main content

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