Skip to main content

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