Ne vous souciez-vous vraiment pas du contenu du tableau d'octets? Je vois cela souvent dans les tests unitaires, où les gens utilisent des égaliseurs anyX () parce qu'ils sont pratiques, mais en réalité, vous devriez presque toujours vous soucier de ce qui est passé. Si vous n'utilisez pas une réponse qui consomme réellement la valeur, vous avez probablement doit correspondre à un argument réel attendu.
Matunos
@Matunos: C'est discutable. L'utilisation de n'importe quel apparieur peut simplifier les tests et la prochaine personne qui regarde le test ne sera pas distraite par une correspondance inutilement précise et peut se concentrer sur le but réel du test.
Malik Atalla
@tbruelle: N'oubliez pas que chaque tableau en Java est un objet. Cela vous aiderait au début.
Avertissement pour tout le monde: maintenant est obsolète, alors j'irais pour la réponse votée Mockito.any (byte []. Class)
Chexpir
10
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:
Vous pouvez toujours créer un Matcher personnalisé en utilisant argThat
Mockito.verify(yourMockHere).methodCallToBeVerifiedOnYourMockHere(ArgumentMatchers.argThat(newArgumentMatcher<Object>(){@Overridepublicboolean matches(Object argument){YourTypeHere[] yourArray =(YourTypeHere[]) argument;// Do whatever you like, here is an example:if(!yourArray[0].getStringValue().equals("first_arr_val")){returnfalse;}returntrue;}}));
Réponses:
Je voudrais essayer
any(byte[].class)
la source
AdditionalMatchers.aryEq(expectedArray)
Essaye ça:
la source
Je préfère utiliser
Matchers.<byte[]>any()
. Cela a fonctionné pour moi.la source
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:
la source
J'ai utilisé
Matchers.refEq
pour ça.la source
Vous pouvez également utiliser Mockito.any () lorsque les arguments sont également des tableaux. Je l'ai utilisé comme ceci:
la source
Ce qui a fonctionné pour moi était
org.mockito.ArgumentMatchers.isA
par exemple:
ça marche bien.
la différence de mise en œuvre les uns des autres est:
la source
Vous pouvez toujours créer un Matcher personnalisé en utilisant
argThat
la source