Dart:
Scrivere i test
Come fare:
In Dart, il pacchetto test
è comunemente utilizzato per scrivere test. Prima, aggiungi il pacchetto test
al tuo pubspec.yaml
:
dev_dependencies:
test: ^1.0.0
Quindi, scrivi un test per una funzione semplice. Supponiamo che tu abbia una funzione che somma due numeri:
int add(int a, int b) {
return a + b;
}
Successivamente, crea un file denominato add_test.dart
nella directory test
e scrivi il caso di test:
import 'package:test/test.dart';
import '../lib/add.dart'; // Supponiamo che la tua funzione `add` sia in lib/add.dart
void main() {
test('somma due numeri', () {
var expected = 3;
expect(add(1, 2), equals(expected));
});
}
Per eseguire i test, utilizza il comando Dart:
$ dart test
L’output del campione potrebbe assomigliare a:
00:01 +1: Tutti i test superati!
Utilizzo di una libreria di terze parti: Mockito per il mocking
Per testare codice che ha dipendenze complesse, potresti utilizzare Mockito per creare oggetti mock. Prima, aggiungi Mockito al tuo pubspec.yaml
:
dev_dependencies:
mockito: ^5.0.0
Supponendo di avere una classe UserRepository
che recupera i dati degli utenti, e vuoi testare un UserService
che dipende da UserRepository
senza colpire un vero 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';
// Crea una classe Mock utilizzando Mockito
class MockUserRepository extends Mock implements UserRepository {}
void main() {
group('Test su UserService', () {
test('Recupera utente con successo', () {
// Crea istanza mock
final mockUserRepository = MockUserRepository();
final userService = UserService(mockUserRepository);
// Impostazione del comportamento mock
when(mockUserRepository.fetchUser(1)).thenReturn(User(id: 1, name: 'Test User'));
// Assicurati che il metodo mockato sia chiamato con gli argomenti attesi
expect(userService.getUserName(1), 'Test User');
verify(mockUserRepository.fetchUser(1)).called(1);
});
});
}
Eseguire questo test conferma che UserService
interagisce correttamente con UserRepository
, utilizzando il mocking per simulare le interazioni reali in modo controllato.