Saltar al contenido

Mockito: usar un método en “thenReturn” para devolver un simulacro no funciona

Solución:

De hecho, esta es una limitación de Mockito, y se hace referencia a ella en sus preguntas frecuentes:

Yo puedo thenReturn() una línea mock()?

Desafortunadamente no puedes hacer esto:

when(m.foo()).thenReturn(mock(Foo.class));
//                         ^

La razón es que la detección de fragmentos inacabados no funcionaría si permitimos la construcción anterior. Consideramos que es una “compensación” de la validación del marco (consulte también la entrada anterior de Preguntas frecuentes). Sin embargo, puede cambiar ligeramente el código para que funcione:

//extract local variable and start smiling:
Foo foo = mock(Foo.class);
when(m.foo()).thenReturn(foo);

La solución alternativa, como se mencionó, es almacenar el valor devuelto deseado en una variable local, como lo ha hecho.

La forma en que lo entiendo es que Mockito valida el uso que hace de él cada vez que llama a sus métodos. Cuando se llama a otro método durante un proceso de apéndice en curso, está interrumpiendo su proceso de validación.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *