Repaso
English
Spring, JPA y Java WebIntermedioSPR-25

¿Para qué se usa Mockito en los tests?

Opciones

  1. Ejecutar la aplicación en un entorno de producción
  2. Crear mocks de las dependencias para probar una clase sola (Opción correcta)
  3. Compilar archivos fuente Java a bytecode rápidamente
  4. Gestionar migraciones del esquema de base de datos entre versiones

Respuesta

Crear objetos mock que sustituyen a las dependencias reales, para probar una clase de forma aislada y verificar sus interacciones

Por qué

Mockito crea versiones falsas de tus dependencias. Le dices al mock qué devolver (when(...).thenReturn(...)) y después verificas las llamadas (verify(...)).

Así puedes probar OrderService sin una base de datos real ni un proveedor de pagos.

Con JUnit 5: @ExtendWith(MockitoExtension.class), @Mock para los falsos e @InjectMocks para la clase bajo prueba.

@ExtendWith(MockitoExtension.class)
class OrderServiceTest {
    @Mock PaymentGateway gateway;
    @InjectMocks OrderService service;

    @Test
    void chargesTheCustomer() {
        when(gateway.charge(100)).thenReturn(true);
        assertTrue(service.pay(100));
        verify(gateway).charge(100);
    }
}

Recuerda

Mockito = dependencias falsas para unit tests aislados.

Términos clave

Practica esta pregunta en Repaso