Mockito-thenCallRealMethod() en la función void
mockito wiki (1)
Hola, he tenido un problema al intentar escribir un caso de prueba JUnit y soy relativamente nuevo en Mockito.
Tengo una función de una clase que me estoy burlando, esta función pasa a ser de un tipo de retorno nulo. Cuando llamo a esta función desde mi clase simulada, es mi entendimiento (y experiencia de depuración) que NO llama a la función original. Para superar esto, he intentado usar un "cuando" con un "thenCallRealMethod ()".
when(instance.voidFunction()).thenCallRealMethod();
El "voidFunction" está lleno de lógica que NO quiero disparar. He extraído estos en cuando las declaraciones para evitar eso. He leído que debo usar el formato de doReturn().when().voidFunction()
, sin embargo, hacer esto no llama al método real.
También entendí que no podía usar un Spy aquí, debido al hecho de que no quiero que se llame al voidFunction () antes de las declaraciones de "cuándo". Cualquier ayuda es apreciada. Pido disculpas si esta es una solución muy fácil ya que mi comprensión de mockito no es muy buena a pesar de leer un poco. ¡Gracias!
La sintaxis de when
no funcionará con un método de anulación (no encajará dentro de when
), y doReturn
no se aplica cuando no hay un valor de retorno. doCallRealMethod
es probablemente la respuesta que desea.
doCallRealMethod().when(instance).voidFunction();
Tenga en cuenta que al llamar a un método real en un simulacro, es posible que no obtenga un comportamiento muy realista, ya que a diferencia de los espías, los objetos burlados omitirán todas las llamadas de constructor e inicializador, incluidas aquellas para establecer campos. Eso significa que si su método utiliza algún estado de instancia, es poco probable que funcione como simulacro con doCallRealMethod
o thenCallRealMethod
. Con un espía, puede crear una instancia real de su clase, y luego el método Mockito.spy
copiará ese estado de instancia para hacer una interacción más realista.