Parece que o mockito apenas verifica se um método de um objeto simulado é chamado e o objeto simulado sempre tem algo como doReturn().when(mock object)
Mas posso criar um objeto mock e definir doReturn().when(mock object)
e, em seguida, verificar se um método de outro objeto é chamado?
Aqui está o que eu quero fazer: defino um mockEnvironment e retorno uma resposta, não importa o que aconteça. Mas, então, quero verificar se diferentes métodos de outro OBJ é chamado em diferentes casos.
Como fazer isso?
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(...);
}
fonte
Anote o objeto não simulado com
@Spy
anotação e, em seguida, verifiqueverify()
. Verifique istofonte