使用 Mockito,我想在其参数列表中verify()
调用方法byte[]
,但我没有找到如何编写它。
myMethod( byte[] )
我只是想要类似的东西anyByteArray()
,如何用 Mockito 做到这一点?
我会尝试any(byte[].class)
尝试这个:
AdditionalMatchers.aryEq(array);
我宁愿使用Matchers.<byte[]>any()
. 这对我有用。
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 }));
我用Matchers.refEq
这个。
当参数也是数组时,您可以使用 Mockito.any() 。我这样使用它:
verify(myMock, times(0)).setContents(any(), any());
您始终可以使用创建自定义匹配器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);
}