Los métodos de verificación de Mockito se utilizan para comprobar que se ha producido un determinado comportamiento. Podemos utilizar los métodos de verificación de Mockito al final del código del método de prueba para asegurarnos de que se han llamado los métodos especificados.
Verificar Mockito
- El método Mockito Verify() también se puede usar para probar la cantidad de invocaciones de métodos. Podemos probar la cantidad exacta de veces, al menos una vez, al menos, como máximo, la cantidad de veces de invocación de un método simulado.
- Podemos utilizar
verifyNoMoreInteractions()después de todas las llamadas al método Verify() para asegurarnos de que todo esté verificado. Si aún queda alguna verificación del método, fallará y proporcionará el mensaje correspondiente. verifyZeroInteractions()El comportamiento es el mismo queverifyNoMoreInteractions()el método.- Podemos utilizar
inOrder()métodos para verificar el orden de invocación de métodos. Podemos omitir una invocación de métodos, pero los métodos que se verifican deben estar en el mismo orden.
Veamos algunos ejemplos del método de verificación de Mockito.
Ejemplo simple de Mockito Verify()
@Testvoid test() {ListString mockList = mock(List.class);mockList.add("Pankaj");mockList.size();verify(mockList).add("Pankaj");}
El método de verificación anterior se ejecutará si add("Pankaj")se lo llama solo una vez en el objeto de lista simulado. Es lo mismo que llamar con times(1)un argumento con el método de verificación.
verify(mockList, times(1)).size();
Si queremos asegurarnos de que se llame a un método pero no nos importa el argumento, podemos usar ArgumentMatchers con el método de verificación.
verify(mockList).add(anyString());verify(mockList).add(any(String.class));verify(mockList).add(ArgumentMatchers.any(String.class));
Tenga en cuenta que org.mockito.Mockitola clase proporciona métodos estáticos para la mayoría de los métodos útiles en el marco Mockito, esto nos ayuda a escribir código fluido al importarlos usando import static.
Mockito verifica con numero de veces
El método Mockito Verify() está sobrecargado , el segundo sí verify(T mock, VerificationMode mode). Podemos usarlo para verificar el recuento de invocaciones.
verify(mockList, times(1)).size(); //same as normal verify methodverify(mockList, atLeastOnce()).size(); // must be called at least onceverify(mockList, atMost(2)).size(); // must be called at most 2 timesverify(mockList, atLeast(1)).size(); // must be called at least onceverify(mockList, never()).clear(); // must never be called
verificarNoMásInteracciones()
Este método se puede utilizar después de todos los métodos de verificación para asegurarse de que se verifiquen todas las interacciones. La prueba fallará si hay interacciones sin verificar en el objeto simulado.
// all interactions are verified, so below will passverifyNoMoreInteractions(mockList);mockList.isEmpty();// isEmpty() is not verified, so below will failverifyNoMoreInteractions(mockList);
La segunda invocación de verificarNoMoreInteractions() fallará con el mensaje de error siguiente:
org.mockito.exceptions.verification.NoInteractionsWanted: No interactions wanted here:- at com.journaldev.mockito.verify.MockitoVerifyExamples.test(MockitoVerifyExamples.java:36)But found this interaction on mock 'list':- at com.journaldev.mockito.verify.MockitoVerifyExamples.test(MockitoVerifyExamples.java:34)***For your reference, here is the list of all invocations ([?] - means unverified).1. - at com.journaldev.mockito.verify.MockitoVerifyExamples.test(MockitoVerifyExamples.java:18)2. - at com.journaldev.mockito.verify.MockitoVerifyExamples.test(MockitoVerifyExamples.java:19)3. [?]- at com.journaldev.mockito.verify.MockitoVerifyExamples.test(MockitoVerifyExamples.java:34)
Una de las grandes características de Mockito es el mensaje de excepción, que señala claramente dónde está fallando nuestra prueba para que podamos solucionarlo fácilmente.
verificarInteraccionesCero()
verifyZeroInteractions()El comportamiento del método es el mismo que el del método verificarNoMoreInteractions().
Map mockMap = mock(Map.class);Set mockSet = mock(Set.class);verify(mockList).isEmpty();verifyZeroInteractions(mockList, mockMap, mockSet);
Mockito verifica solo la llamada al método
Si queremos verificar que solo se está llamando a un método, podemos usar only()el método de verificación.
Map mockMap = mock(Map.class);mockMap.isEmpty();verify(mockMap, only()).isEmpty();
Mockito Verificar orden de invocación
Podemos utilizar InOrderpara verificar el orden de invocación. Podemos omitir cualquier método para verificar, pero los métodos que se verifican deben invocarse en el mismo orden.
InOrder inOrder = inOrder(mockList, mockMap);inOrder.verify(mockList).add("Pankaj");inOrder.verify(mockList, calls(1)).size();inOrder.verify(mockList).isEmpty();inOrder.verify(mockMap).isEmpty();
Resumen
Los métodos de verificación de Mockito se pueden usar para asegurarse de que se estén llamando los métodos del objeto simulado. Si se elimina por error alguna llamada de método, el método de verificación generará un error.
Puedes ver más ejemplos de Mockito en nuestro repositorio de GitHub .