Кажется, что mockito только проверяет, вызывается ли метод фиктивного объекта, а у фиктивного объекта всегда есть что-то вроде doReturn().when(mock object)
Но могу ли я создать фиктивный объект и определить, doReturn().when(mock object)
а затем проверить, что вызывается метод другого объекта?
Вот что я хочу сделать: я определяю mockEnvironment и возвращаю ответ, что бы ни случилось. Но затем я хочу проверить, что разные методы вызываются в разных случаях.
Как это сделать?
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(...);
}
источник
Добавьте аннотацию к не фиктивному объекту,
@Spy
а затем проверьте наличиеverify()
. Проверить этоисточник