Avec Mockito, je veux verify()
un appel de méthode avec byte[]
dans sa liste d'arguments, mais je n'ai pas trouvé comment écrire ceci.
myMethod( byte[] )
Je veux juste quelque chose comme anyByteArray()
, comment faire ça avec Mockito?
Avec Mockito, je veux verify()
un appel de méthode avec byte[]
dans sa liste d'arguments, mais je n'ai pas trouvé comment écrire ceci.
myMethod( byte[] )
Je veux juste quelque chose comme anyByteArray()
, comment faire ça avec Mockito?
Réponses:
Je voudrais essayer any(byte[].class)
AdditionalMatchers.aryEq(expectedArray)
Essaye ça:
AdditionalMatchers.aryEq(array);
Je préfère utiliser Matchers.<byte[]>any()
. Cela a fonctionné pour moi.
Je suis d'accord avec Mutanos et Alecio. De plus, on peut vérifier autant d'appels de méthode identiques que possible (en vérifiant les appels suivants dans le code de production, l'ordre des vérifications n'a pas d'importance). Voici le code:
import static org.mockito.AdditionalMatchers.*;
verify(mockObject).myMethod(aryEq(new byte[] { 0 }));
verify(mockObject).myMethod(aryEq(new byte[] { 1, 2 }));
Vous pouvez également utiliser Mockito.any () lorsque les arguments sont également des tableaux. Je l'ai utilisé comme ceci:
verify(myMock, times(0)).setContents(any(), any());
Ce qui a fonctionné pour moi était org.mockito.ArgumentMatchers.isA
par exemple:
isA(long[].class)
ça marche bien.
la différence de mise en œuvre les uns des autres est:
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);
}
Vous pouvez toujours créer un Matcher personnalisé en utilisant 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;
}
}));