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.