使用Mockito,我想验证()在其参数列表中使用byte[]的方法调用,但我不知道如何编写这个。

 myMethod( byte[] )

我只是想要一些像anyByteArray(),如何做到与Mockito ?


当前回答

我将尝试any(byte[].class)

其他回答

我将尝试any(byte[].class)

我使用了Matchers。refEq。

对我有用的是org.mockito.ArgumentMatchers.isA

例如:

isA(long[].class)

这很好。

彼此的实施差异是:

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);
}

试试这个:

AdditionalMatchers.aryEq(array);

你总是可以使用argThat创建一个自定义的Matcher

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;
    }
}));