With Mockito, I want to verify()
a method call with byte[]
in its argument list, but I didn't find how to write this.
myMethod( byte[] )
I just want something like anyByteArray()
, how to do that with Mockito ?
With Mockito, I want to verify()
a method call with byte[]
in its argument list, but I didn't find how to write this.
myMethod( byte[] )
I just want something like anyByteArray()
, how to do that with Mockito ?
I would try any(byte[].class)
Try this:
AdditionalMatchers.aryEq(array);
I would rather use Matchers.<byte[]>any()
. This worked for me.
I agree with Mutanos and Alecio. Further, one can check as many identical method calls as possible (verifying the subsequent calls in the production code, the order of the verify's does not matter). Here is the code:
import static org.mockito.AdditionalMatchers.*;
verify(mockObject).myMethod(aryEq(new byte[] { 0 }));
verify(mockObject).myMethod(aryEq(new byte[] { 1, 2 }));
You can use Mockito.any() when arguments are arrays also. I used it like this:
verify(myMock, times(0)).setContents(any(), any());
You can always create a custom Matcher using 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;
}
}));
What works for me was org.mockito.ArgumentMatchers.isA
for example:
isA(long[].class)
that works fine.
the implementation difference of each other is:
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);
}