Mit Mockito möchte ich verify()
einen Methodenaufruf mit byte[]
in seiner Argumentliste, aber ich habe nicht gefunden, wie ich das schreiben soll.
myMethod( byte[] )
Ich möchte nur so etwas wie anyByteArray()
, wie macht man das mit Mockito?
Mit Mockito möchte ich verify()
einen Methodenaufruf mit byte[]
in seiner Argumentliste, aber ich habe nicht gefunden, wie ich das schreiben soll.
myMethod( byte[] )
Ich möchte nur so etwas wie anyByteArray()
, wie macht man das mit Mockito?
Antworten:
ich würde versuchen any(byte[].class)
AdditionalMatchers.aryEq(expectedArray)
Versuche dies:
AdditionalMatchers.aryEq(array);
Ich würde lieber verwenden Matchers.<byte[]>any()
. Das hat bei mir funktioniert.
Ich stimme Mutanos und Alecio zu. Außerdem kann man so viele identische Methodenaufrufe wie möglich überprüfen (Überprüfung der nachfolgenden Aufrufe im Produktionscode, die Reihenfolge der Überprüfungen spielt keine Rolle). Hier ist der Code:
import static org.mockito.AdditionalMatchers.*;
verify(mockObject).myMethod(aryEq(new byte[] { 0 }));
verify(mockObject).myMethod(aryEq(new byte[] { 1, 2 }));
Sie können Mockito.any () verwenden, wenn Argumente auch Arrays sind. Ich habe es so benutzt:
verify(myMock, times(0)).setContents(any(), any());
Was für mich funktioniert war org.mockito.ArgumentMatchers.isA
beispielsweise:
isA(long[].class)
das funktioniert gut.
Der Implementierungsunterschied voneinander ist:
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);
}
Sie können jederzeit einen benutzerdefinierten Matcher mit erstellen 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;
}
}));