Com o Mockito, quero verify()
uma chamada de método byte[]
na sua lista de argumentos, mas não encontrei como escrever isso.
myMethod( byte[] )
Eu só quero algo como anyByteArray()
, como fazer isso com Mockito?
Com o Mockito, quero verify()
uma chamada de método byte[]
na sua lista de argumentos, mas não encontrei como escrever isso.
myMethod( byte[] )
Eu só quero algo como anyByteArray()
, como fazer isso com Mockito?
Respostas:
eu tentaria any(byte[].class)
AdditionalMatchers.aryEq(expectedArray)
Tente o seguinte:
AdditionalMatchers.aryEq(array);
Eu prefiro usar Matchers.<byte[]>any()
. Isso funcionou para mim.
Eu concordo com Mutanos e Alecio. Além disso, é possível verificar o maior número possível de chamadas de método idênticas (verificando as chamadas subseqüentes no código de produção, a ordem da verificação não importa). Aqui está o código:
import static org.mockito.AdditionalMatchers.*;
verify(mockObject).myMethod(aryEq(new byte[] { 0 }));
verify(mockObject).myMethod(aryEq(new byte[] { 1, 2 }));
Você pode usar Mockito.any () quando argumentos também são matrizes. Eu usei assim:
verify(myMock, times(0)).setContents(any(), any());
O que funciona para mim foi org.mockito.ArgumentMatchers.isA
por exemplo:
isA(long[].class)
isso funciona bem.
a diferença de implementação um do outro é:
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);
}
Você sempre pode criar um Matcher personalizado usando 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;
}
}));