Correspondant à un tableau d'Objets à l'aide de Mockito
Je vais essayer de mettre en place une maquette pour une méthode qui prend un tableau d'objets de Demande:
client.batchCall(Request[])
J'ai essayé ces deux variations:
when(clientMock.batchCall(any(Request[].class))).thenReturn(result);
...
verify(clientMock).batchCall(any(Request[].class));
et
when(clientMock.batchCall((Request[])anyObject())).thenReturn(result);
...
verify(clientMock).batchCall((Request[])anyObject());
Mais je peux dire que l'on se moque de ne pas être invoquée.
Elles résultent dans l'erreur suivante:
Argument(s) are different! Wanted:
clientMock.batchCall(
<any>
);
-> at com.my.pkg.MyUnitTest.call_test(MyUnitTest.java:95)
Actual invocation has different arguments:
clientMock.batchCall(
{Request id:123},
{Request id:456}
);
Pourquoi le comparateur de ne pas correspondre à la matrice? Existe t il une matcher j'ai besoin de l'utiliser pour correspondre à un tableau d'objets? La chose la plus proche que je peux trouver est AdditionalMatches.aryEq(), mais qui, je dois préciser le contenu exact de la matrice, ce qui, je préfèrerais ne pas le faire.
OriginalL'auteur Vysarat | 2014-08-25
Vous devez vous connecter pour publier un commentaire.
J'ai donc rapidement mettre quelque chose ensemble pour voir si je pouvais trouver votre problème, et ne peut pas ci-dessous mon code d'exemple de l'utilisation du tout(Classe) matcher et cela a fonctionné. Donc, il ya quelque chose que nous ne voient pas.
Cas de Test
classe client
Demande De Classe
OriginalL'auteur ndrone
Necroposting, mais de vérifier si la méthode que vous appelez est déclarée comme
batchCall(Request[] requests)
oubatchCall(Request... requests)
.Si c'est le deuxième cas, essayez de
when(clientMock.batchCall(Mockito.anyVararg()))
.Mockito.anyVararg()
est obsolète, utilisez(Type) Mockito.any()
au lieuOriginalL'auteur mrec