Dart:
Testien kirjoittaminen
Kuinka:
Dartissa test
-pakettia käytetään yleisesti testien kirjoittamiseen. Lisää ensin test
-paketti pubspec.yaml
-tiedostoosi:
dev_dependencies:
test: ^1.0.0
Kirjoita sitten testi yksinkertaiselle funktiolle. Oletetaan, että sinulla on funktio, joka laskee yhteen kaksi lukua:
int add(int a, int b) {
return a + b;
}
Seuraavaksi, luo tiedosto nimeltä add_test.dart
test
-hakemistoon ja kirjoita testitapauksesi:
import 'package:test/test.dart';
import '../lib/add.dart'; // Oletetaan, että `add`-funktiosi on lib/add.dart-tiedostossa
void main() {
test('laskee kaksi lukua yhteen', () {
var odotettu = 3;
expect(add(1, 2), equals(odotettu));
});
}
Testien suorittamiseen käytä Dart-komentoa:
$ dart test
Esimerkkitulostus voi näyttää tältä:
00:01 +1: Kaikki testit läpäisty!
Kolmannen osapuolen kirjaston käyttö: Mockito mock-olioiden luomiseen
Monimutkaisten riippuvuuksien koodin testaamisessa saatat käyttää Mockitoa mock-olioiden luomiseen. Lisää ensin Mockito pubspec.yaml
-tiedostoosi:
dev_dependencies:
mockito: ^5.0.0
Oletetaan, että sinulla on luokka UserRepository
, joka noutaa käyttäjätietoja, ja haluat testata UserService
-palvelua, joka riippuu UserRepository
-palvelusta ilman oikean tietokannan käyttöä:
import 'package:mockito/mockito.dart';
import 'package:test/test.dart';
import 'package:your_project/user_repository.dart';
import 'package:your_project/user_service.dart';
// Luo Mock-luokka käyttäen Mockitoa
class MockUserRepository extends Mock implements UserRepository {}
void main() {
group('UserService Testit', () {
test('Noutaa käyttäjän onnistuneesti', () {
// Luo mock-instanssi
final mockUserRepository = MockUserRepository();
final userService = UserService(mockUserRepository);
// Asetetaan mock-käyttäytymistä
when(mockUserRepository.fetchUser(1)).thenReturn(User(id: 1, name: 'Testikäyttäjä'));
// Varmistetaan, että mock-metodia kutsutaan odotetuilla argumenteilla
expect(userService.getUserName(1), 'Testikäyttäjä');
verify(mockUserRepository.fetchUser(1)).called(1);
});
});
}
Tämän testin suorittaminen vahvistaa, että UserService
vuorovaikuttaa oikein UserRepository
-palvelun kanssa käyttäen mockausmenetelmää todellisten vuorovaikutusten simuloimiseksi kontrolloidulla tavalla.