Estoy tratando de verificar que se está llamando a un método (vacío) dentro de un DAO: estoy usando un punto de confirmación que envía una lista de resultados hasta ese punto, restablece la lista y continúa. Digamos que tengo 4 cosas en la lista y tengo un punto de confirmación de 1, esperaría que el método "enviar" se llame 4 veces. Puedo verificar que el método se llame una vez escribiendo
Mockito.verify(mock).send()
pasa .. pero quiero verificar la cantidad de veces que se llamó. Yo pensaría que
Mockito.verify(mock.send(), times(4))
sería suficiente, pero dice que los parámetros no son correctos para verificar.
Por cierto, si cambio Mockito.verify(mock).send()
de Mockito.verify(mock.send())
o Mockito.verify((mock).send())
me sale el mismo error. ¿Pensamientos sobre esto?
Mockito.verify(mock, times(4)).send()
. Me pregunto por qué "moviste" lasend()
llamada alverify
método dentro del método. Ya tenías la sintaxis correcta.verify(mock, atLeastOnce()).send();
Mockito.verify(mock).send()
pasó, pero solo encapsularlo causó un error que no cambia nada. sin embargo, es una victoria!Respuestas:
El método necesario es Mockito # verificar :
mock
es su objeto simulado ymode
es elVerificationMode
que describe cómo se debe verificar el simulacro. Los modos posibles son :Necesitará estas importaciones estáticas de la
Mockito
clase para usar elverify
método y estos modos de verificación:Entonces, en su caso, la sintaxis correcta será:
Esto verifica que el método
send
fue llamado 4 veces en el objeto burlado. Fallará si se llamó menos o más de 4 veces.Si solo desea verificar, si el método ha sido llamado una vez, entonces no necesita pasar a
VerificationMode
. Un simpleseria suficiente. Se utiliza internamente
verify(mock, times(1)).someMethod("was called once");
.Es posible tener múltiples llamadas de verificación en el mismo simulacro para lograr una verificación "entre". Mockito no admite algo como esto
verify(mock, between(4,6)).someMethod("was called between 4 and 6 times");
, pero podemos escribiren cambio, para obtener el mismo comportamiento. Los límites están incluidos , por lo que el caso de prueba es verde cuando el método se llamó 4, 5 o 6 veces.
fuente
VerificationMode
métodos (para importación estática o referencia explícita), están dentroorg.mockito.internal.verification.VerificationModeFactory
.verify(mock, atLeast(0)).someMethod("was called any number of times");
fue útil para ignorar una verificación de llamadaverify(between(m,n))
que verifica el número de llamadas entre myn?verify
a veces conatLeast(M)
yatMost(n)
obtener el mismo comportamiento. He editado la respuesta y explica eso.VerificationModeFactory
. Todavía está disponible en la versión más nueva, pero estoy de acuerdo en que las clases internas no deberían usarse.