Con Mockito, quiero verify()
una llamada al método byte[]
en su lista de argumentos, pero no encontré cómo escribir esto.
myMethod( byte[] )
Solo quiero algo como anyByteArray()
, ¿cómo hacer eso con Mockito?
Con Mockito, quiero verify()
una llamada al método byte[]
en su lista de argumentos, pero no encontré cómo escribir esto.
myMethod( byte[] )
Solo quiero algo como anyByteArray()
, ¿cómo hacer eso con Mockito?
Respuestas:
lo intentaré any(byte[].class)
AdditionalMatchers.aryEq(expectedArray)
Prueba esto:
AdditionalMatchers.aryEq(array);
Prefiero usar Matchers.<byte[]>any()
. Esto funcionó para mí.
Estoy de acuerdo con Mutanos y Alecio. Además, uno puede verificar tantas llamadas a métodos idénticos como sea posible (verificando las llamadas posteriores en el código de producción, el orden de la verificación no importa). Aquí está el código:
import static org.mockito.AdditionalMatchers.*;
verify(mockObject).myMethod(aryEq(new byte[] { 0 }));
verify(mockObject).myMethod(aryEq(new byte[] { 1, 2 }));
Puede usar Mockito.any () cuando los argumentos son matrices también. Lo usé así:
verify(myMock, times(0)).setContents(any(), any());
Lo que funciona para mí fue org.mockito.ArgumentMatchers.isA
por ejemplo:
isA(long[].class)
Eso funciona bien.
La diferencia de implementación entre ellos es:
public static <T> T any(Class<T> type) {
reportMatcher(new VarArgAware(type, "<any " + type.getCanonicalName() + ">"));
return Primitives.defaultValue(type);
}
public static <T> T isA(Class<T> type) {
reportMatcher(new InstanceOf(type));
return Primitives.defaultValue(type);
}
Siempre puedes crear un Matcher personalizado usando argThat
Mockito.verify(yourMockHere).methodCallToBeVerifiedOnYourMockHere(ArgumentMatchers.argThat(new ArgumentMatcher<Object>() {
@Override
public boolean matches(Object argument) {
YourTypeHere[] yourArray = (YourTypeHere[]) argument;
// Do whatever you like, here is an example:
if (!yourArray[0].getStringValue().equals("first_arr_val")) {
return false;
}
return true;
}
}));