Dart:
Tests Schrijven

Hoe:

In Dart wordt het test pakket vaak gebruikt voor het schrijven van tests. Voeg eerst het test pakket toe aan je pubspec.yaml:

dev_dependencies:
  test: ^1.0.0

Schrijf vervolgens een test voor een eenvoudige functie. Stel je voor dat je een functie hebt die twee nummers optelt:

int add(int a, int b) {
  return a + b;
}

Maak daarna een bestand genaamd add_test.dart in de test directory en schrijf je testgeval:

import 'package:test/test.dart';
import '../lib/add.dart'; // Stel je voor dat je `add` functie in lib/add.dart is

void main() {
  test('voegt twee nummers toe', () {
    var verwacht = 3;
    expect(add(1, 2), equals(verwacht));
  });
}

Om de tests te draaien, gebruik je het Dart-commando:

$ dart test

Voorbeelduitvoer zou kunnen lijken op:

00:01 +1: Alle tests geslaagd!

Gebruik maken van een externe bibliotheek: Mockito voor mocking

Voor het testen van code die complexe afhankelijkheden heeft, kun je Mockito gebruiken om mock-objecten te creëren. Voeg eerst Mockito toe aan je pubspec.yaml:

dev_dependencies:
  mockito: ^5.0.0

Stel dat je een klasse UserRepository hebt die gebruikersgegevens ophaalt, en je wilt een UserService testen die afhankelijk is van UserRepository zonder een echte database te raken:

import 'package:mockito/mockito.dart';
import 'package:test/test.dart';
import 'package:your_project/user_repository.dart';
import 'package:your_project/user_service.dart';

// Maak een Mock-klasse met Mockito
class MockUserRepository extends Mock implements UserRepository {}

void main() {
  group('UserService Tests', () {
    test('Haalt gebruiker succesvol op', () {
      // Maak mockinstantie
      final mockUserRepository = MockUserRepository();
      final userService = UserService(mockUserRepository);

      // Mockgedrag instellen
      when(mockUserRepository.fetchUser(1)).thenReturn(User(id: 1, name: 'Testgebruiker'));

      // Controleren dat de gemockte methode wordt aangeroepen met de verwachte argumenten
      expect(userService.getUserName(1), 'Testgebruiker');
      verify(mockUserRepository.fetchUser(1)).called(1);
    });
  });
}

Het uitvoeren van deze test bevestigt dat UserService correct interageert met UserRepository, waarbij mocking wordt gebruikt om de echte interacties op een gecontroleerde manier te simuleren.