Dart:
Escribiendo pruebas
Cómo hacerlo:
En Dart, el paquete test
se utiliza comúnmente para escribir pruebas. Primero, añade el paquete test
a tu pubspec.yaml
:
dev_dependencies:
test: ^1.0.0
Luego, escribe una prueba para una función simple. Supongamos que tienes una función que suma dos números:
int add(int a, int b) {
return a + b;
}
A continuación, crea un archivo llamado add_test.dart
en el directorio test
y escribe tu caso de prueba:
import 'package:test/test.dart';
import '../lib/add.dart'; // Suponemos que tu función `add` está en lib/add.dart
void main() {
test('suma dos números', () {
var esperado = 3;
expect(add(1, 2), equals(esperado));
});
}
Para ejecutar las pruebas, usa el comando Dart:
$ dart test
La salida de muestra podría parecerse a:
00:01 +1: ¡Todas las pruebas pasaron!
Usando una biblioteca de terceros: Mockito para simular
Para probar código que tiene dependencias complejas, podrías usar Mockito para crear objetos simulados. Primero, añade Mockito a tu pubspec.yaml
:
dev_dependencies:
mockito: ^5.0.0
Suponiendo que tienes una clase UserRepository
que recupera datos de usuario, y quieres probar un UserService
que depende de UserRepository
sin acceder a una base de datos real:
import 'package:mockito/mockito.dart';
import 'package:test/test.dart';
import 'package:tu_proyecto/user_repository.dart';
import 'package:tu_proyecto/user_service.dart';
// Crea una clase Mock usando Mockito
class MockUserRepository extends Mock implements UserRepository {}
void main() {
group('Pruebas de UserService', () {
test('Recupera usuario exitosamente', () {
// Crea instancia mock
final mockUserRepository = MockUserRepository();
final userService = UserService(mockUserRepository);
// Configurando comportamiento mock
when(mockUserRepository.fetchUser(1)).thenReturn(User(id: 1, name: 'Usuario de Prueba'));
// Afirmar que el método simulado se llama con los argumentos esperados
expect(userService.getUserName(1), 'Usuario de Prueba');
verify(mockUserRepository.fetchUser(1)).called(1);
});
});
}
Ejecutar esta prueba confirma que UserService
interactúa correctamente con UserRepository
, usando la simulación para imitar las interacciones reales de manera controlada.