Dart:
Rédaction de tests
Comment faire :
En Dart, le package test
est couramment utilisé pour écrire des tests. Tout d’abord, ajoutez le package test
à votre pubspec.yaml
:
dev_dependencies:
test: ^1.0.0
Ensuite, écrivez un test pour une fonction simple. Supposons que vous avez une fonction qui ajoute deux nombres :
int add(int a, int b) {
return a + b;
}
Puis, créez un fichier nommé add_test.dart
dans le répertoire test
et écrivez votre cas de test :
import 'package:test/test.dart';
import '../lib/add.dart'; // Supposons que votre fonction `add` se trouve dans lib/add.dart
void main() {
test('ajoute deux nombres', () {
var expected = 3;
expect(add(1, 2), equals(expected));
});
}
Pour exécuter les tests, utilisez la commande Dart :
$ dart test
Un exemple de sortie pourrait ressembler à :
00:01 +1: Tous les tests ont réussi !
Utiliser une bibliothèque tierce : Mockito pour le mocking
Pour tester le code qui a des dépendances complexes, vous pourriez utiliser Mockito pour créer des objets simulés. D’abord, ajoutez Mockito à votre pubspec.yaml
:
dev_dependencies:
mockito: ^5.0.0
Supposons que vous avez une classe UserRepository
qui récupère les données des utilisateurs, et vous souhaitez tester un UserService
qui dépend de UserRepository
sans toucher une vraie base de données :
import 'package:mockito/mockito.dart';
import 'package:test/test.dart';
import 'package:votre_projet/user_repository.dart';
import 'package:votre_projet/user_service.dart';
// Créer une classe Mock en utilisant Mockito
class MockUserRepository extends Mock implements UserRepository {}
void main() {
group('Tests de UserService', () {
test('Récupère l’utilisateur avec succès', () {
// Créer une instance mock
final mockUserRepository = MockUserRepository();
final userService = UserService(mockUserRepository);
// Configurer le comportement simulé
when(mockUserRepository.fetchUser(1)).thenReturn(User(id: 1, name: 'Test User'));
// Affirmer que la méthode simulée est appelée avec les arguments attendus
expect(userService.getUserName(1), 'Test User');
verify(mockUserRepository.fetchUser(1)).called(1);
});
});
}
Exécuter ce test confirme que UserService
interagit correctement avec UserRepository
, en utilisant le mocking pour simuler les véritables interactions d’une manière contrôlée.