Café y Código

9. Introducción a Mocks (Mockito)

¿Qué es un Mock?

Un Mock es un objeto simulado. Imagina que el código de tu UsuarioService necesita una BaseDeDatos para funcionar. ¡No queremos depender de una DB de verdad en un test unitario! Para eso usamos Mockito, que nos permite fingir que la DB existe y que devuelve lo que nosotros queramos.

Creando un Mockito básico
JAVA
1 import static org.mockito.Mockito.*;
2
3 @Test
4 void testLoginService() {
5 // 1. Arrange: Simulamos/fingimos la DB
6 BaseDeDatos dbMock = mock(BaseDeDatos.class);
7 // Le decimos: "cuando alguien pida el usuario 5, devuelve a 'Messi'"
8 when(dbMock.buscarUser(5)).thenReturn(new Usuario("Messi"));
9
10 // 2. Act
11 Usuario u = dbMock.buscarUser(5);
12
13 // 3. Assert
14 assertEquals("Messi", u.getNombre());
15 }

👨‍💻 Ejercicio Práctico 1

Misión: El Cajero fingido

Usa mock() de Banco.class y dile a Mockito que thenReturn(100.0) cuando se llame a getSaldo().

👁️ Ver solución propuesta
JAVA
1 Banco bMock = mock(Banco.class);
2 when(bMock.getSaldo()).thenReturn(100.0);

👨‍💻 Ejercicio Práctico 2

Misión: Verificando la llamada

Dada la simulación anterior, usa verify(bMock).getSaldo() para confirmar que se llamó al método una sola vez en el test.

👁️ Ver solución propuesta
JAVA
1 verify(bMock, times(1)).getSaldo();

Ponte a prueba

¿Tus Mocks son realistas?

Ko-fi
Donaciones
Apoyá cafeycodigo con un café en Ko-fi. Colaboradores: insignia, muro y zona exclusiva.