En Mockito, `VerifyZeroInteraction 'es un método de verificación especializado utilizado para garantizar que no se realicen llamadas de método en un objeto burlado durante una prueba. Este método es crucial para mantener la pureza de las pruebas unitarias al prevenir las interacciones no deseadas que podrían indicar fallas en las dependencias lógicas o innecesarias.
Diferencias de otros métodos de verificación
1. Propósito y comportamiento:
- `VerifyZeroInteraction`: este método verifica que no se han realizado ninguna llamada de método en un objeto burlado. Si se detecta alguna llamada de método, Mockito lanza una excepción, lo que hace que la prueba falle. Se usa para afirmar que un objeto simulado permanece intacto durante la ejecución de la prueba [1] [4].
- `verificar ': este método se utiliza para verificar que las llamadas de método específicos ocurran como se esperaba. Le permite verificar si se llamó a un método con argumentos específicos y puede usarse con varios modos de verificación como `Times ()`, `al menos ()` y `atmost ()` para especificar el número de invocaciones [2] [7].
2. Modos de verificación:
- `VerifyZeroInteractions 'no admite modos de verificación. Simplemente verifica la ausencia de cualquier interacción.
- `Verify` admite múltiples modos de verificación, como` Times () `,` al menos () `,` AtLeastonce () `y` atmost () `, lo que le permite especificar cuántas veces se debe llamar un método [2] [7].
3. Orden de invocación:
- `VerifyZeroInteractions 'no se refiere al orden de las llamadas de método, ya que verifica ninguna interacción en absoluto.
- `Verify` se puede usar con 'Inorder` para verificar las invocaciones de orden de método en objetos simulados. Esto es útil cuando la secuencia de llamadas de método es importante [2] [7].
4. Casos de uso:
- `VerifyZeroInteractions` se usa típicamente cuando desea asegurarse de que un objeto simulado no se use en absoluto en un escenario de prueba. Esto ayuda a aislar la unidad bajo prueba y garantizar que no ocurran efectos secundarios debido a interacciones inesperadas [1] [4].
- `verificar 'se usa en escenarios en los que debe confirmar que se producen interacciones específicas entre objetos. Es esencial para probar el comportamiento esperado de un sistema bajo prueba [2] [7].
5. Relación con `VerifyNomoreTerations`:
- verificaciones de `VerifyZeroinTinations` que no han ocurrido interacciones.
- verificaciones de Interacciones "VerifyNomore` que todas las interacciones en un objeto simulado se han verificado. Asegura que no queden interacciones no verificadas después de usar `Verify` para llamadas de método específicos [3] [9].
En resumen, 'VerifyZeroInteraction' es un método especializado centrado en garantizar que no se produzcan interacciones, mientras que 'verificar' es más versátil, lo que le permite verificar las interacciones específicas y su frecuencia. Ambos métodos son esenciales en las pruebas unitarias con Mockito, que sirven diferentes propósitos según el escenario de prueba.
Citas:[1] https://www.dhiwise.com/post/how-to-use-verifyzerointeractions-for-better-flutter-tests
[2] https://www.dhiwise.com/post/mastering-unit-testing-a-complete-guide-to-mockito-verify
[3] https://stackoverflow.com/questions/52396683/difference-between-verifynomoreinteractions-and-verifyzerointeracciones-inmockit
[4] https://www.lambdatest.com/automation-testing-advisor/selenium/methods/org.mockito.mockito.verifyzerointeracciones
[5] https://stackoverflow.com/questions/64239160/using-mockito-when-to-mock-and-verify-vs-mockito-verify
[6] https://www.javacodegeeks.com/2015/11/mockito-verification.html
[7] https://www.toptal.com/java/a-guide-to-everyday-mockito
[8] https://www.baeldung.com/mockito-verify
[9] https://www.digitalocean.com/community/tutorials/mockito-verify