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.0Ensuite, é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 testUn 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.0Supposons 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.