Testen schrijven
Testen schrijven
Tests zijn je vangnet. Ze voorkomen dat werkende code kapotgaat bij nieuwe wijzigingen. Claude Code is bijzonder goed in het schrijven van tests — het ziet edge cases die je zelf mist.
Waarom testen?
Zonder tests:
- Elke wijziging kan iets anders breken
- Je durft niet te refactoren
- Bugs ontdek je pas in productie
- Claude’s wijzigingen kunnen ongemerkt dingen kapotmaken
Met tests:
- Je weet direct of iets breekt
- Refactoring is veilig
- Claude kan zelf testen draaien en bugs fixen
- Je slaapt beter
Unit tests met Claude
Unit tests testen individuele functies. Vraag Claude om ze te schrijven:
Schrijf unit tests voor src/utils/price.ts.
Test elke functie met:
- Normale input (happy path)
- Edge cases (lege input, negatieve getallen, nul)
- Ongeldige input (string in plaats van number)
Gebruik Vitest.
Claude genereert tests zoals:
import { describe, it, expect } from 'vitest';
import { calculateDiscount, formatPrice } from './price';
describe('calculateDiscount', () => {
it('berekent 20% korting correct', () => {
expect(calculateDiscount(100, 20)).toBe(80);
});
it('geeft originele prijs bij 0% korting', () => {
expect(calculateDiscount(50, 0)).toBe(50);
});
it('geeft 0 bij 100% korting', () => {
expect(calculateDiscount(75, 100)).toBe(0);
});
it('gooit error bij negatieve korting', () => {
expect(() => calculateDiscount(100, -10)).toThrow();
});
});
Claude vindt edge cases die je zelf over het hoofd ziet: wat als de korting groter is dan 100%? Wat als de prijs 0 is? Wat als je een string meegeeft? Laat Claude ook deze scenario’s testen.
Integration tests
Integration tests testen hoe onderdelen samenwerken:
Schrijf integration tests voor de checkout flow:
1. Gebruiker voegt product toe aan winkelwagen
2. Gebruiker gaat naar checkout
3. Betaling wordt verwerkt
4. Bestelling wordt opgeslagen in de database
5. Bevestigingsmail wordt verstuurd
Mock de externe services (Stripe, email).
Claude begrijpt het verschil tussen unit en integration tests. Bij integration tests mockt het externe diensten automatisch, zodat je tests niet afhankelijk zijn van Stripe of je e-mail provider.
TDD: Test-Driven Development
TDD draait het proces om: eerst de test, dan de code.
We gaan TDD doen voor een wachtwoord validator.
Eisen:
- Minimaal 8 tekens
- Minstens één hoofdletter
- Minstens één cijfer
- Minstens één speciaal teken
Schrijf eerst de tests. Implementeer daarna de
functie zodat alle tests slagen.
Claude schrijft eerst de tests:
describe('validatePassword', () => {
it('accepteert een geldig wachtwoord', () => {
expect(validatePassword('Welkom1!')).toBe(true);
});
it('weigert te kort wachtwoord', () => {
expect(validatePassword('Ab1!')).toBe(false);
});
// ... meer tests
});
En dan de implementatie die alle tests laat slagen.
Tests laten fixen door Claude
Een krachtige workflow: draai tests en laat Claude de fouten oplossen:
Draai npm run test en fix alle falende tests.
Als een test faalt door een bug in de code (niet
in de test), fix de code. Als de test zelf fout is,
fix de test.
Claude draait de tests, leest de errors, en past de juiste bestanden aan.
Coverage verbeteren
Draai npm run test -- --coverage en analyseer welke
bestanden onder de 80% coverage zitten. Schrijf
extra tests voor de ontbrekende scenarios.
100% code coverage is geen doel op zich. Focus op het testen van kritieke business logica (betalingen, authenticatie, data validatie) in plaats van elk CSS class te testen.
Testen als onderdeel van je workflow
De ideale workflow met Claude:
- Schrijf tests voor de gewenste functionaliteit
- Implementeer de code met Claude
- Draai tests om te verifiëren
- Fix wat nog niet werkt
- Commit als alles groen is
Ons standaard proces: schrijf eerst de test,
dan de implementatie. Draai tests na elke
wijziging. Commit alleen als alles slaagt.
Wat je nu moet kunnen:
Je kunt nu effectief testen met Claude:
- Unit tests voor individuele functies
- Integration tests voor samenwerkende onderdelen
- TDD: eerst test, dan code
- Claude kan falende tests analyseren en fixen
Begin met het testen van de meest kritieke functie in je project. Vraag Claude om unit tests te schrijven en draai ze.