concepto · intermedio · 2 min de lectura
Test Doubles
Los test doubles son objetos que reemplazan dependencias reales durante el testing, permitiendo aislar la unidad bajo prueba y controlar su comportamiento.
No requiere conocimientos previos.
Alcance en breve
Cubre
- Test Doubles as a concept
No cubre
- implementation details
Supone
- The reader understands relevant fundamentals.
Resumen
Test double es el término genérico para cualquier objeto que reemplaza una dependencia real en un test. La taxonomía de Gerard Meszaros (xUnit Test Patterns) define cinco tipos:
- Dummy: objeto que se pasa pero nunca se usa —rellenar un parámetro—.
- Stub: devuelve respuestas predefinidas sin lógica —"siempre devolvé true"—.
- Spy: registra cómo fue llamado para verificar después —"fue llamado 3 veces"—.
- Mock: espera ser llamado de cierta forma y falla si no ocurre —"espero que se llame a save() exactamente una vez"—.
- Fake: implementación funcional pero simplificada —base de datos en memoria—.
Alcance y supuestos
Cubre test doubles, la diferencia entre mocks, stubs y fakes. Asume familiaridad con testing.
Modelo mental
Un actor en un simulacro de juicio. No es un abogado real, pero responde como uno para que los estudiantes de derecho puedan practicar. Un stub siempre responde "objecion"; un mock exige que le pregunten exactamente 3 veces.
Uso práctico
- ✅ Aislar dependencias externas: APIs, bases de datos, email, reloj.
- ❌ Usar mocks para todo: tests frágiles que verifican implementación en vez de comportamiento.
Ejemplo trabajado: stub vs mock
Stub de UserRepo: findById siempre devuelve {name: 'Ana'}. Mock de EmailService: espera que send sea llamado exactamente una vez con user.email. El test con stub verifica estado; el test con mock verifica interaccion.
Evidencia
- xUnit Test Patterns de Gerard Meszaros es la referencia canónica. Mockito (Java), Sinon (JS) y unittest.mock (Python) implementan test doubles.
Fuentes citadas
- Wikipedia, Unit testing (Síntesis, 21-07-2026)