Test doubles: tipos y cuándo usar cada uno en tus pruebas
Clase 5 de 16 • Curso de Android Testing
Resumen
Cuando desarrollas tests unitarios, necesitas evaluar una unidad específica sin que dependencias externas interfieran. Si utilizas dependencias reales como bases de datos o APIs, podrías enfrentarte a pruebas lentas o fallos inexplicables, conocidos como flaky tests. La solución: utilizar test doubles, también llamados dependencias falsas, que te permiten controlar el entorno de prueba.
¿Qué es un dummy y cuándo usarlo?
Un dummy es el doble de prueba más sencillo disponible. Lo usas únicamente para cumplir con la interfaz sin lógica funcional real detrás. Por ejemplo, si tienes una clase llamada ShoppingCarCache, un dummy de esta clase devolvería siempre una respuesta vacía y evitaría interacciones con servicios externos.
¿Cuándo es recomendable utilizar un stub?
Los stubs proporcionan respuestas fijas y controladas sin ejecutar una lógica compleja. Un stub es ideal cuando quieres que tu función reciba datos específicos en respuesta. Por ejemplo, un método loadCart de un ShoppingCarCache simulado podría devolverte siempre la misma lista de productos establecida previamente, facilitando así pruebas más consistentes.
¿Qué ventajas tiene emplear fakes, spies y mocks?
¿Para qué sirve un fake?
Los fakes realizan operaciones funcionales reales, pero almacenan sus resultados en memoria, evitando bases de datos o redes. Ejemplo práctico: guardar productos en una lista interna en lugar de una base de datos externa, simulando comportamiento realista.
¿Cómo funciona un spy?
Un spy actúa como un fake, con el beneficio adicional de poder verificar si se han ejecutado ciertas acciones. Si usas la función loadCart, puedes constatar que efectivamente fue llamada, siendo útil para comprobar efectos secundarios.
¿Cuándo y por qué utilizar un mock?
Los mocks te brindan el control total sobre las interacciones y respuestas esperadas del objeto simulado. Puedes determinar exactamente qué métodos responderán y cómo. Sin embargo, conviene aplicarlos cuidadosamente ya que abusar puede derivar en pruebas más enfocadas en el cómo que en lo que efectivamente intentas probar.
Recomendaciones clave para elegir tu test double
Cada tipo de doble posee su propósito específico:
- Dummy: simplemente cumplimentar requerimientos de interfaces.
- Stub: respuestas predefinidas y constantes.
- Fake: lógica funcional realista sin dependencias externas.
- Spy: verificar si los métodos fueron llamados.
- Mock: control completo sobre comportamientos e interacciones.
Seleccionar el doble adecuado dependerá directamente de qué necesitas probar en cada caso concreto, buscando siempre pruebas claras, rápidas y confiables.
¿Has empleado test doubles anteriormente? ¡Comparte tu experiencia y cuál prefieres para tus pruebas!