Aan de slag
Laravel biedt standaard voorzieningen om functionaliteit die de database gebruikt veilig en snel te verifiëren. Door database-reset-traits, modelfactories, seeders en speciale assertions te combineren, maak je tests die niet snel breken.
Begin in de basis met RefreshDatabase. In veel gevallen behoud je daarmee de onafhankelijkheid van je tests sneller dan met een volledige reset.
De database na elke test resetten
Gebruik de database-reset-traits van Laravel om te voorkomen dat data van een eerdere test de volgende test beïnvloedt.
RefreshDatabase bepaalt of het schema up-to-date is. Zo ja, dan wordt de test in een transactie uitgevoerd; zo niet, dan worden eerst de migraties uitgevoerd.
Wil je niet de transactie-aanpak, maar elke keer een volledige reset, gebruik dan een van de volgende traits.
Modelfactories
Wanneer je data voorbereidt vóór een test, kun je met modelfactories beknopt Eloquent-modellen genereren.
Zie Eloquent-factories voor details over factory-definities, states en relaties.
Seeders uitvoeren
Wil je tijdens een test data inladen, gebruik dan seed(). Zonder argument wordt de DatabaseSeeder uitgevoerd, met argument een specifieke seeder (of een array).
Wil je bij alle tests die RefreshDatabase gebruiken elke keer automatisch seeden, voeg dan het #[Seed]-attribuut toe aan je basistestklasse.
Wil je alleen een specifieke seeder automatisch uitvoeren, gebruik dan #[Seeder(...)].
Beschikbare assertions
Laravel biedt speciale database-assertions die zowel in Pest als PHPUnit werken.
assertDatabaseCount
Controleert dat het aantal records in een tabel overeenkomt met de verwachte waarde.
assertDatabaseEmpty
Controleert dat een tabel leeg is.
assertDatabaseHas
Controleert dat er een record bestaat dat aan de opgegeven voorwaarden voldoet.
assertDatabaseMissing
Controleert dat er geen record bestaat dat aan de opgegeven voorwaarden voldoet.
assertSoftDeleted
Controleert dat het betreffende Eloquent-model soft-deleted is.
assertNotSoftDeleted
Controleert dat het betreffende Eloquent-model niet soft-deleted is.
assertModelExists
Controleert dat het opgegeven model (of de modelcollectie) in de database bestaat.
assertModelMissing
Controleert dat het opgegeven model (of de modelcollectie) niet in de database bestaat.
expectsDatabaseQueryCount
Legt aan het begin van een test het exacte totale aantal databasequeries vast dat uitgevoerd zal worden. Als het werkelijke aantal niet overeenkomt, faalt de test.
Laatst gewijzigd op 6 september 2026