Dart:
Skrive tester
Hvordan:
I Dart er test
-pakken vanligvis brukt for å skrive tester. Først, legg til test
-pakken i din pubspec.yaml
:
dev_dependencies:
test: ^1.0.0
Deretter skriver du en test for en enkel funksjon. Anta at du har en funksjon som legger sammen to tall:
int add(int a, int b) {
return a + b;
}
Videre, opprett en fil med navn add_test.dart
i test
-mappen og skriv testtilfellet ditt:
import 'package:test/test.dart';
import '../lib/add.dart'; // Anta at din `add`-funksjon er i lib/add.dart
void main() {
test('legger til to tall', () {
var forventet = 3;
expect(add(1, 2), equals(forventet));
});
}
For å kjøre testene, bruk Dart-kommandoen:
$ dart test
Eksempel på utdata kan se slik ut:
00:01 +1: Alle tester bestått!
Bruke et tredjepartsbibliotek: Mockito for mocking
For å teste kode som har komplekse avhengigheter, kan du bruke Mockito for å opprette mock-objekter. Først, legg til Mockito i din pubspec.yaml
:
dev_dependencies:
mockito: ^5.0.0
Anta at du har en klasse UserRepository
som henter brukerdata, og du vil teste en UserService
som avhenger av UserRepository
uten å treffe en ekte database:
import 'package:mockito/mockito.dart';
import 'package:test/test.dart';
import 'package:your_project/user_repository.dart';
import 'package:your_project/user_service.dart';
// Opprett en Mock-klasse med bruk av Mockito
class MockUserRepository extends Mock implements UserRepository {}
void main() {
group('UserService Tester', () {
test('Henter bruker vellykket', () {
// Opprett mock-instans
final mockUserRepository = MockUserRepository();
final userService = UserService(mockUserRepository);
// Setter opp mock-atferd
when(mockUserRepository.fetchUser(1)).thenReturn(User(id: 1, name: 'Testbruker'));
// Bekrefter at den mockede metoden blir kalt med forventede argumenter
expect(userService.getUserName(1), 'Testbruker');
verify(mockUserRepository.fetchUser(1)).called(1);
});
});
}
Å kjøre denne testen bekrefter at UserService
samhandler korrekt med UserRepository
, ved å bruke mocking for å simulere de virkelige interaksjonene på en kontrollert måte.