¿Para qué se usa Mockito en los tests?
Opciones
- Ejecutar la aplicación en un entorno de producción
- Crear mocks de las dependencias para probar una clase sola (Opción correcta)
- Compilar archivos fuente Java a bytecode rápidamente
- 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.