web-dev-qa-db-fra.com

Comment ignorer plusieurs appels de méthode void à l'intérieur d'une méthode void dans Mockito

Je teste une méthode void qui appelle plusieurs autres méthodes void dans une classe (toutes ces méthodes appartiennent à la même classe). La méthode est quelque chose dans ce sens ...

public void methodToTest() {
   methodA();
   methodB();
}

void methodA() {
   methodA1();
   methodA2();
   methodA3();
}

Ce que j'aimerais faire, c'est que methodA() ci-dessus ne fasse rien. C'est-à-dire que je veux que methodA() soit fondamentalement comme ceci:

void methodA() { }

J'ai essayé doThrow() et doAnswer() sur methodA() sans succès. C'est comme si ces deux sont complètement ignorés.

Un exemple de ce que j'ai essayé ...

doThrow(new RuntimeException()).when(mockedClass).methodA();

Y at-il un moyen de faire cela en utilisant simplement Mockito? Je ne suis pas libre de changer de classe.

13
Zack Macomber

Si vous souhaitez que methodB soit toujours exécuté, alors que methodA ne fait rien. Cela fera que:

TestClass spy = spy(new TestClass());
doNothing().when(spy).methodA();
spy.methodToTest(); 
20
Chris D
 @Mock
 ApplicationClass applicationClass; 


 Mockito.doNothing().when(applicationClass).myMethod(Matchers.any(Object.class));
0
EL missaoui habib