Saltar al contenido
Explorar conocimiento

concepto · intermedio · 2 min de lectura

Mocking

El mocking crea objetos simulados que verifican interacciones —qué métodos se llamaron, con qué argumentos, cuántas veces— durante un test.

No requiere conocimientos previos.

Alcance en breve

Cubre

  • Mocking as a concept

No cubre

  • implementation details

Supone

  • The reader understands relevant fundamentals.

Resumen

Mocking es la técnica de crear objetos que no solo reemplazan dependencias, sino que también registran y verifican cómo fueron usados. Un mock de un servicio de email puede fallar el test si send() no fue llamado exactamente una vez con los argumentos esperados, incluso si el resultado del test es correcto.

A diferencia de los stubs —que solo devuelven valores—, los mocks verifican comportamiento. Son útiles para probar interacciones entre objetos, pero un exceso de mocking produce tests frágiles que se rompen cuando cambiás detalles de implementación aunque el comportamiento externo sea el mismo.

Alcance y supuestos

Cubre mocking, su diferencia con stubs y buenas prácticas. Asume familiaridad con test doubles.

Modelo mental

Un inspector de calidad que no solo verifica que el producto final funciona, sino que además exige que se haya usado el destornillador rojo y no el azul, y que se haya apretado exactamente 3 veces.

Uso práctico

  • ✅ Verificar interacciones con dependencias externas: emails, notificaciones, logs.
  • ❌ Mockear cada dependencia: preferí stubs y fakes cuando alcanza con verificar estado.

Ejemplo trabajado: mock con Jest

const emailService = { send: jest.fn() };
const order = new OrderService(emailService);
await order.place(user);
expect(emailService.send).toHaveBeenCalledWith(user.email, expect.any(String));

Evidencia

  • Jest, Mockito y Sinon son las librerías de mocking más usadas.

Fuentes citadas