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.