如何验证调用了非模拟对象的方法?
how to verify a method of a non-mock object is called?
貌似mockito只验证mock对象的方法是否被调用,mock对象总是有类似doReturn().when(mock object)
的东西
但是我可以创建一个模拟对象并定义 doReturn().when(mock object)
然后验证调用了另一个对象的方法?
这是我想要做的:我定义了一个 mockEnvironment 和 return 无论发生什么情况的响应。但是后来我想验证在不同情况下调用 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(...);
}
貌似mockito只验证mock对象的方法是否被调用,mock对象总是有类似doReturn().when(mock object)
但是我可以创建一个模拟对象并定义 doReturn().when(mock object)
然后验证调用了另一个对象的方法?
这是我想要做的:我定义了一个 mockEnvironment 和 return 无论发生什么情况的响应。但是后来我想验证在不同情况下调用 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(...);
}