Tests schrijven voelt voor veel developers als een luxe die ze niet hebben. Deadlines, budgetten, “we testen het wel handmatig.” Maar ongeteste code is technische schuld die je vroeg of laat terugbetaalt — met rente. Laravel maakt testen verrassend toegankelijk. Hier is een praktische introductie.

Waarom testen?

  • Je maakt met vertrouwen nieuwe features zonder bestaande functionaliteit te breken
  • Bugs worden gevonden voordat ze productie bereiken
  • Tests documenteren de verwachte werking van je code
  • Refactoring wordt een stuk minder angstaanjagend

Laravel’s testinfrastructuur

Laravel gebruikt PHPUnit als test runner en voegt er een krachtige set helpermethoden bovenop. Tests staan in de tests/-map, opgedeeld in Unit en Feature.

php artisan make:test UserRegistrationTest --feature
php artisan test

Unit tests

Unit tests testen een geïsoleerde klasse of methode, zonder database of externe services.

public function test_price_calculation()
{
    $product = new Product(['price' => 100, 'vat_rate' => 21]);
    $this->assertEquals(121, $product->priceWithVat());
}

Feature tests

Feature tests testen een complete functionaliteit, inclusief HTTP-requests, database en middleware.

public function test_user_can_register()
{
    $response = $this->post('/register', [
        'name' => 'Jan Peeters',
        'email' => 'jan@example.be',
        'password' => 'secret123',
        'password_confirmation' => 'secret123',
    ]);
    
    $response->assertRedirect('/dashboard');
    $this->assertDatabaseHas('users', ['email' => 'jan@example.be']);
}

Factories voor testdata

Laravel’s model factories genereren realistische testdata:

php artisan make:factory ProductFactory
$products = Product::factory()->count(10)->create();

Mocking

Soms wil je externe services (e-mail, API’s, betaling) simuleren in tests. Laravel biedt ingebouwde mocking:

Mail::fake();
// ... test die een mail verstuurt
Mail::assertSent(WelcomeEmail::class);

Test-driven development (TDD)

TDD draait het proces om: schrijf eerst de test, daarna de implementatie. Het dwingt je na te denken over de gewenste werking voordat je code schrijft. Voor complexe businesslogica leidt TDD tot schonere, beter doordachte code.

Hoeveel testen is genoeg?

Perfecte code coverage is geen doel op zich. Focus op het testen van:

  • Kritieke businesslogica
  • Edge cases en foutscenario’s
  • Integraties met externe systemen

Bij Meesy bouwen we Laravel applicaties met een testcultuur ingebakken. Voor maatwerk software die kritieke bedrijfsprocessen ondersteunt, zijn tests geen optie maar een vereiste. Neem contact op om te bespreken hoe we betrouwbare software voor jou bouwen.

Conclusie

Testen in Laravel is niet ingewikkeld — het is een kwestie van het doen. Begin met feature tests voor je belangrijkste user flows. Voeg unit tests toe voor complexe businesslogica. Je toekomstige zelf — en je klanten — zullen je dankbaar zijn.

Heb je vragen over dit onderwerp of wil je samenwerken?

Neem contact op