J'ai un problème avec Mockito.Tests unitaires avec mockito (moquerie partielle)
Est-il possible de faire une telle chose:
ClassX x = mock(ClassX.class)
when(x.methodB()).thenReturn("toto");
String result = x.methodA();
Je travaille avec Mockito 1.7.
j'ai vu qu'il y avait un système « d'espionnage », mais ils disent qu'il est recommandé de ne pas l'utiliser (pourquoi?) Sur la question que nous testons ...
J'ai essayé cette fonction d'espionnage de toute façon, mais je reçois un comportement étrange .
Vérifiez ce que je veux faire:
Code réel:
String methodA(String arg) {
return this.methodB(arg);
}
String methodB(String arg) {
return "toto";
}
Code d'essai:
@Test
public void testTest() {
final ClassX x = spy(new ClassX());
final String argument = "arg";
doReturn("good").when(helper).methodB(argument);
assertTrue( x.methodB(argument).equals("good"));
assertTrue( x.methodA(argument).equals("good"));
}
Comme ils ont dit que j'évitais la quand une syntaxe thenReturn qui pourrait être un problème un espion (mais ça ne marche pas non plus de toute façon)
La chose étrange est que: assertTrue (x.methodB (argument) .equals ("bon")); est OK
Seul le second assertTrue (x.methodA (argument) .equals ("good")); n'est pas OK
En fait helper.methodA (argument) retourne « toto » -> le résultat réel et non le résultat simulé
Il est impossible de dire Mockito revenir « bon » dans ce cas? ?? Il semble que lorsque la classe de test appelle la méthodeB c'est ok, mais si une méthode de l'espion appelle la méthodeB cela ne marche plus ...
Je ne sais pas quoi faire ... est-ce si étrange chose à l'unité-tester 2 méthodes de la même classe et de rendre les tests indépendants les uns des autres de sorte qu'un célèbre cadre de test de simulation ne met pas en œuvre cette fonction de base? N'est-ce pas ce que nous appelons de vrais tests unitaires? Je ne comprends pas pourquoi ils disent d'éviter d'utiliser la méthode d'espionnage sur l'objet testé ...
Merci
Juste essayé avec Mockito 1.9.5 et tous les deux ont renvoyé '' bon ''. Donc je suppose que ce comportement est parti. – acdcjunior