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

 myMethod( byte[] )

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


当前回答

我同意穆塔诺斯和阿莱西奥。 此外,可以检查尽可能多的相同方法调用(验证生产代码中的后续调用,验证的顺序无关紧要)。 代码如下:

import static org.mockito.AdditionalMatchers.*;

    verify(mockObject).myMethod(aryEq(new byte[] { 0 }));
    verify(mockObject).myMethod(aryEq(new byte[] { 1, 2 }));

其他回答

我宁愿使用匹配器。<byte[]>any()。这对我很管用。

当参数也是数组时,也可以使用Mockito.any()。 我是这样用的:

verify(myMock, times(0)).setContents(any(), any());

我使用了Matchers。refEq。

你总是可以使用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;
    }
}));

我同意穆塔诺斯和阿莱西奥。 此外,可以检查尽可能多的相同方法调用(验证生产代码中的后续调用,验证的顺序无关紧要)。 代码如下:

import static org.mockito.AdditionalMatchers.*;

    verify(mockObject).myMethod(aryEq(new byte[] { 0 }));
    verify(mockObject).myMethod(aryEq(new byte[] { 1, 2 }));