Con Mockito, voglio verify()
chiamare un metodo con byte[]
nella sua lista di argomenti, ma non ho trovato il modo di scriverlo.
myMethod( byte[] )
Voglio solo qualcosa del genere anyByteArray()
, come farlo con Mockito?
Con Mockito, voglio verify()
chiamare un metodo con byte[]
nella sua lista di argomenti, ma non ho trovato il modo di scriverlo.
myMethod( byte[] )
Voglio solo qualcosa del genere anyByteArray()
, come farlo con Mockito?
Risposte:
proverei any(byte[].class)
AdditionalMatchers.aryEq(expectedArray)
Prova questo:
AdditionalMatchers.aryEq(array);
Preferirei usare Matchers.<byte[]>any()
. Questo ha funzionato per me.
Sono d'accordo con Mutanos e Alecio. Inoltre, si possono verificare quante più chiamate di metodo identiche possibili (verificando le chiamate successive nel codice di produzione, l'ordine delle verifiche non ha importanza). Ecco il codice:
import static org.mockito.AdditionalMatchers.*;
verify(mockObject).myMethod(aryEq(new byte[] { 0 }));
verify(mockObject).myMethod(aryEq(new byte[] { 1, 2 }));
È possibile utilizzare Mockito.any () anche quando gli argomenti sono matrici. L'ho usato così:
verify(myMock, times(0)).setContents(any(), any());
Ciò che funziona per me è stato org.mockito.ArgumentMatchers.isA
per esempio:
isA(long[].class)
funziona benissimo.
la differenza di attuazione reciproca è:
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);
}
Puoi sempre creare un Matcher personalizzato 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;
}
}));