Comparadores de argumentos de Mockito: any(), eq()

Mockito nos permite crear objetos simulados y simular el comportamiento para nuestros casos de prueba. Normalmente simulamos el comportamiento usando when()y thenReturn()en el objeto simulado.

Comparadores de argumentos de Mockito: cualquiera()

A veces queremos simular el comportamiento de cualquier argumento del tipo dado, en ese caso, podemos usar los comparadores de argumentos de Mockito. Los métodos de argumentos de Mockito se definen en org.mockito.ArgumentMatchersla clase como métodos estáticos. Supongamos que tenemos una clase definida como:

class Foo {boolean bool(String str, int i, Object obj) {return false;}int in(boolean b, ListString strs) {return 0;}int bar(byte[] bytes, String[] s, int i) {return 0;}}

Veamos algunos ejemplos de uso de comparadores de argumentos Mockito para crear comportamientos genéricos.

Foo mockFoo = mock(Foo.class);when(mockFoo.bool(anyString(), anyInt(), any(Object.class))).thenReturn(true);

Estamos creando un método bool() para que devuelva “verdadero” para cualquier argumento de cadena, entero y objeto. Todas las afirmaciones siguientes se aprobarán en este caso:

assertTrue(mockFoo.bool("A", 1, "A"));assertTrue(mockFoo.bool("B", 10, new Object()));

Comparador de argumentos Mockito – eq()

Cuando utilizamos comparadores de argumentos, todos los argumentos deben utilizar comparadores. Si queremos utilizar un valor específico para un argumento, podemos utilizar eq()el método.

when(mockFoo.bool(eq("false"), anyInt(), any(Object.class))).thenReturn(false);assertFalse(mockFoo.bool("false", 10, new Object()));

También hay comparadores de argumentos para la lista, el conjunto y el mapa.

when(mockFoo.in(anyBoolean(), anyList())).thenReturn(10);

Si desea hacer coincidir con matrices, utilice el método any() de la siguiente manera:

any(byte[].class)any(Object[].class)

Matchers adicionales de Mockito

La clase Mockito org.mockito.AdditionalMatchersofrece algunos comparadores que se usan con poca frecuencia. Podemos especificar argumentos que sean mayores que, menores que, realizar operaciones OR, AND, NOT. También podemos verificar la igualdad de matrices.

when(mockFoo.bar(any(byte[].class), aryEq(new String[] { "A", "B" }), gt(10))).thenReturn(11);

Entonces, si llamamos al método bar() con cualquier matriz de bytes como argumento, el segundo argumento como {“A”, “B” } y el tercer argumento mayor que 10, entonces el método stubbed devolverá 11. Las siguientes afirmaciones pasarán para nuestro método stubbed.

assertEquals(11, mockFoo.bar("abc".getBytes(), new String[] { "A", "B" }, 20));assertEquals(11, mockFoo.bar("xyz".getBytes(), new String[] { "A", "B" }, 99));

Mockito verifica los coincidentes de argumentos

Los comparadores de argumentos de Mockito solo se pueden usar con los métodos when() y verified(). Veamos algunos ejemplos de uso de comparadores de argumentos en el método de verificación de Mockito .

verify(mockFoo, atLeast(0)).bool(anyString(), anyInt(), any(Object.class));verify(mockFoo, atLeast(0)).bool(eq("false"), anyInt(), any(Object.class));

Resumen

Los métodos de comparación de argumentos de Mockito son muy útiles para crear ejemplos de comportamientos de forma genérica. Existen muchos métodos para cubrir casi todos los requisitos.

Puedes ver más ejemplos de Mockito en nuestro repositorio de GitHub .

SUSCRÍBETE A NUESTRO BOLETÍN 
No te pierdas de nuestro contenido ni de ninguna de nuestras guías para que puedas avanzar en los juegos que más te gustan.

Deja un comentario

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

Scroll al inicio