Mocks, fakes y cobertura
Aísle unidades y mida lo que prueba
Mocks, fakes y cobertura es una lección gratuita de Dart Academy en CoddyKit. Esta es la lección 4 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Dart Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Dart Academy incluye 4 lecciones en total.
Aísle la unidad
Una prueba unitaria debe comprobar una sola pieza de forma aislada. Las bases de datos o redes reales hacen que las pruebas sean lentas e inestables, así que las reemplazamos. 🔌
Dobles de prueba
Un test double sustituye a una dependencia real. Los mocks, fakes y stubs son las variantes habituales que puede utilizar.
Qué es un fake
Un fake tiene una implementación funcional, pero simplificada; por ejemplo, una lista en memoria que sustituye a una base de datos real.
class FakeRepo implements Repo {
final _items = <Item>[];
}Qué es un mock
Un mock registra cómo se le llamó para que pueda verificar las interacciones, no solo los valores finales.
El paquete mockito
El paquete mockito genera mocks por usted. Anote el tipo que desea y ejecute build_runner para crearlo.
@GenerateMocks([Repo])
import 'repo_test.mocks.dart';Crear stubs con when
Use when para programar un mock: cuando se llame a este método, devuelva este valor, de modo que el comportamiento sea predecible.
when(repo.find(1))
.thenReturn(Item('a'));Verificar llamadas
Use verify para comprobar que se llamó a un método y cuántas veces, demostrando que su código se comunicó correctamente con su dependencia.
verify(repo.save(any)).called(1);Crear stubs asíncronos
Para los métodos que devuelven un Future, prográmelos con thenAnswer para que el mock pueda devolver un resultado asíncrono.
when(api.load())
.thenAnswer((_) async => 'ok');Mock frente a fake
Use un fake cuando necesite un comportamiento realista, y un mock cuando le importe qué llamadas se realizaron.
Qué significa la cobertura
La coverage mide qué líneas ejecutan realmente sus pruebas. Una cobertura alta sugiere exhaustividad, pero nunca garantiza que el código sea correcto.
Generar cobertura
Ejecute las pruebas recopilando coverage y después convierta los datos en un informe que pueda leer o subir a una herramienta.
dart test --coverage=coverageComprobación rápida
¿Qué doble registra las llamadas para que pueda verificarlas?
Resumen
Aisló las unidades con fakes y mocks, creó stubs con when, verificó llamadas y midió la cobertura. Pruebas rápidas, centradas y fiables. 🎯
Preguntas frecuentes
¿La lección «Mocks, fakes y cobertura» es gratis?
Sí — el texto completo de «Mocks, fakes y cobertura» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Dart Academy, actualiza a CoddyKit PRO. El curso de Dart Academy incluye 4 lecciones en total.
¿Qué aprenderé en «Mocks, fakes y cobertura»?
Aísle unidades y mida lo que prueba Practicas Dart Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar Dart Academy?
No se requiere experiencia previa. Dart Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 4 de 4.
¿Cuánto tiempo toma la lección «Mocks, fakes y cobertura»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de Dart Academy?
Sí. Cada lección de Dart Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Su primer test y expect
- group, setUp y tearDown
- Pruebas de código async y streams
- Mocks, fakes y cobertura