Dart:
Skriva tester
Hur man gör:
I Dart används ofta paketet test
för att skriva tester. Först, lägg till paketet test
i din pubspec.yaml
:
dev_dependencies:
test: ^1.0.0
Skriv sedan ett test för en enkel funktion. Antag att du har en funktion som adderar två nummer:
int add(int a, int b) {
return a + b;
}
Därefter, skapa en fil med namnet add_test.dart
i test
-katalogen och skriv ditt testfall:
import 'package:test/test.dart';
import '../lib/add.dart'; // Anta att din `add` funktion finns i lib/add.dart
void main() {
test('lägger till två nummer', () {
var expected = 3;
expect(add(1, 2), equals(expected));
});
}
För att köra testerna, använd Dart-kommandot:
$ dart test
Exempel på utdata kan se ut som följer:
00:01 +1: Alla tester passerade!
Använda ett tredjepartsbibliotek: Mockito för att mocka
För att testa kod som har komplexa beroenden kan du använda Mockito för att skapa mockobjekt. Först, lägg till Mockito i din pubspec.yaml
:
dev_dependencies:
mockito: ^5.0.0
Antag att du har en klass UserRepository
som hämtar användardata, och du vill testa en UserService
som beror på UserRepository
utan att slå mot en riktig databas:
import 'package:mockito/mockito.dart';
import 'package:test/test.dart';
import 'package:your_project/user_repository.dart';
import 'package:your_project/user_service.dart';
// Skapa en Mock-klass med Mockito
class MockUserRepository extends Mock implements UserRepository {}
void main() {
group('UserService-tester', () {
test('Hämtar användare framgångsrikt', () {
// Skapa mock-instans
final mockUserRepository = MockUserRepository();
final userService = UserService(mockUserRepository);
// Konfigurera mock-beteende
when(mockUserRepository.fetchUser(1)).thenReturn(User(id: 1, name: 'Test Användare'));
// Kontrollera att den mockade metoden anropas med förväntade argument
expect(userService.getUserName(1), 'Test Användare');
verify(mockUserRepository.fetchUser(1)).called(1);
});
});
}
Att köra detta test bekräftar att UserService
interagerar korrekt med UserRepository
, genom att använda mocking för att simulera de verkliga interaktionerna på ett kontrollerat sätt.