С Mockito я хочу verify()
вызвать метод с byte[]
его списком аргументов, но я не нашел, как это написать.
myMethod( byte[] )
Я просто хочу что-то вроде anyByteArray()
, как это сделать с Mockito?
С Mockito я хочу verify()
вызвать метод с byte[]
его списком аргументов, но я не нашел, как это написать.
myMethod( byte[] )
Я просто хочу что-то вроде anyByteArray()
, как это сделать с Mockito?
Ответы:
я бы попробовал any(byte[].class)
AdditionalMatchers.aryEq(expectedArray)
Попробуй это:
AdditionalMatchers.aryEq(array);
Я бы предпочел использовать Matchers.<byte[]>any()
. Это сработало для меня.
Я согласен с Мутаносом и Алесио. Кроме того, можно проверить как можно больше одинаковых вызовов методов (при проверке последующих вызовов в производственном коде порядок проверки не имеет значения). Вот код:
import static org.mockito.AdditionalMatchers.*;
verify(mockObject).myMethod(aryEq(new byte[] { 0 }));
verify(mockObject).myMethod(aryEq(new byte[] { 1, 2 }));
Вы можете использовать Mockito.any (), когда аргументы также являются массивами. Я использовал это так:
verify(myMock, times(0)).setContents(any(), any());
Что работает для меня было 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);
}
Вы всегда можете создать собственный Matcher, используя 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;
}
}));