Кажется, что mockito проверяет, вызван ли метод макетного объекта, а у mock-объекта всегда есть sth. например, doReturn(). когда (макет объекта) ...Как проверить метод немонического объекта?
Но могу ли я создать макет объекта и определить doReturn(). когда (mock object) .. , а затем проверить метод другого объекта?
Вот что я хочу сделать: я определяю mockEnvironment и возвращаю ответ независимо от того, что произойдет. Но тогда я хочу проверить разные методы anotherObj вызывается в разных случаях.
Как это сделать?
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(...);
}
Это значит, что мне нужно будет создать и ввести несколько обманутых объектов, если я хочу проверить несколько вещей? это не удобно. – user389955
@ user389955 Да, вам нужно настроить каждый объект, который вы хотите проверить как шпион. Насколько я знаю, это не так. Mockito должен добавить прокси-сервер к объектам, и кто-то должен сказать Mockito, который указывает на прокси-сервер. –
Вместо того, чтобы говорить «// делать что-то», может быть полезно добавить, что это «anotherObjSpy», который должен заставить тестировать метод. – jwehrle