Comment faire pour capturer les paramètres variables avec Mockito?
Il existe une méthode qui a des paramètres variables:
class A {
public void setNames(String... names) {}
}
Maintenant, j'ai envie de le simuler avec mockito
, et de capturer les noms sont passés. Mais je ne peux pas trouvé un moyen de capturer un certain nombre de noms passé, je ne peux faire comme ceci:
ArgumentCaptor<String> captor1 = ArgumentCaptor.fromClass(String.class);
ArgumentCaptor<String> captor2 = ArgumentCaptor.fromClass(String.class);
A mock = Mockito.mock(A.class);
mock.setNames("Jeff", "Mike");
Mockito.verity(mock).setNames(captor1.capture(), captor2.capture());
String name1 = captor1.getValue(); //Jeff
String name2 = captor2.getValue(); //Mike
Si je passe trois noms, il ne peut pas travailler, et je dois définir un captor3
pour capturer le 3ème nom.
Comment résoudre ce problème?
Vous devez vous connecter pour publier un commentaire.
Mockito 1.10.5 a introduit cette fonctionnalité.
Pour l'exemple de code dans la question, voici un moyen de capturer les varargs:
Veuillez voir le ArgumentCaptor javadoc pour plus de détails.
ArgumentCaptor<T>
pouvez capturer toutes les classes d'instances deT
. par exemple, l'utilisationArgumentCaptor<Object>
à capturer tous les types d'objets. Veuillez noter qu'une méthode statique comme Chaîne de caractères.format() ne peut pas être moqué ou espionné avec Mockito. Merci de voir ceci réponse pour plus de détails.À compter d'aujourd'hui (7 Novembre 2013), il semble être abordées, mais inédit, avec un peu de travail supplémentaire nécessaire. Voir la les groupes de threads et outil de suivi d' pour plus de détails.