Mockito matcher and array of primitives

JavaMockito

Java Problem Overview


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 ?

Java Solutions


Solution 1 - Java

I would try any(byte[].class)

Solution 2 - Java

Try this:

AdditionalMatchers.aryEq(array);

Solution 3 - Java

I would rather use Matchers.<byte[]>any(). This worked for me.

Solution 4 - Java

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

Solution 5 - Java

I used Matchers.refEq for this.

Solution 6 - Java

You can use Mockito.any() when arguments are arrays also. I used it like this:

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

Solution 7 - Java

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

Solution 8 - Java

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

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestiontbruyelleView Question on Stackoverflow
Solution 1 - JavagpecheView Answer on Stackoverflow
Solution 2 - JavaAlécio CarvalhoView Answer on Stackoverflow
Solution 3 - JavaFabiano FrancesconiView Answer on Stackoverflow
Solution 4 - JavaRene UmmelsView Answer on Stackoverflow
Solution 5 - JavaBowofolaView Answer on Stackoverflow
Solution 6 - JavaCrenguta SView Answer on Stackoverflow
Solution 7 - JavaKoray TugayView Answer on Stackoverflow
Solution 8 - JavaMilton Jacomini NetoView Answer on Stackoverflow