Il semble que mockito vérifie uniquement si une méthode d'un objet fictif est appelée et que l'objet fictif a toujours quelque chose comme doReturn().when(mock object)
Mais puis-je créer un objet fictif et définir doReturn().when(mock object)
puis vérifier qu'une méthode d'un autre objet est appelée?
Voici ce que je veux faire: je définis un environnement simulé et je renvoie une réponse quoi qu'il arrive. Mais ensuite, je veux vérifier différentes méthodes d'un autreObj est appelé dans différents cas.
Comment faire ça?
public class BaseClass {
private Environment mockEnvironment;
@Test
public void testcase () {
setMockitoEnvironment();
response = foo(mockEnvironment, argument1);
verify(anotherObj).codePath1(...);
response = foo(mockEnvironment, argument2);
verify(anotherObj).codePath2(...);
}
}
//this method successfully return a response with any input
//because I do not care how response is eventually generated,
//I only care whether code path reaches createResponse() via
//code path 1 or code path 2.
private void setMockitoEnvironment() {
mockEnvironment = mock(Environment.class);
doReturn (response).when(mockEnvironment).createResponse(for any input);
}
private Response foo(...) {
...
return createResponse(...);
}
la source
Annotez l'objet non fictif avec une
@Spy
annotation, puis vérifiezverify()
. Vérifiez cecila source