似乎模拟仅验证模拟对象的方法是否被调用,并且模拟对象始终具有类似以下内容的东西 doReturn().when(mock object)
但是我可以创建一个模拟对象并定义doReturn().when(mock object)
然后验证另一个对象的方法是否被调用吗?
这是我想做的事情:我定义了一个模拟环境,无论发生什么情况都返回一个响应。但是然后我想验证在不同情况下调用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 Spy。如果您设置anotherObj
为间谍,则可以验证该对象上的方法调用。在您的示例中,您需要确保对的调用foo
使用间谍而不是的常规实现anotherObj
。间谍设置如下:
AnotherClass anotherObjSpy = Mockito.spy(new AnotherClass());
// do stuff -- e.g. anotherObjSpy.foo(...);
verify(anotherObjSpy).codePath1(...);
下面是我要为其创建测试的类和方法: 具体地说,我希望模拟getAnalytics.getAll(),这样它就会返回一个我已经定义的字符串。而不是方法执行它的任务。这是我的代码:
我正在寻找一种方法来验证Mockito,在测试期间没有与给定的模拟进行任何交互。对于具有验证模式的给定方法,很容易实现这一点,但是我还没有找到完整模拟的解决方案。 我真正想要实现的是:在测试中验证,控制台上没有打印任何get。jUnit的总体思路如下: 一个有很多方法,我真的不想用单独的verify来验证每一个方法,对于。。。 所以我希望,如果有一个简单的解决方案,鉴于我有一个良好的测试覆盖率,我
我有一个测试,如下所示,在给定条件下,我想确保。 然而,它错误地指出 错误出现在行 应为不是模拟对象。如何测试为非模拟对象调用的方法? 我在如何验证一个非模拟对象的方法中看到了答案?,但这仍然是使用模拟和间谍。我希望找到一种不需要嘲笑我已经拥有的类实例的方法。 (注:以上内容以科特林书写)
我试图编写一个单元测试,它需要确认是否调用了一个方法。我使用的是JUnit、Mockito和PowerMock。 因此,在这里,我的测试系统是。我正在运行这个测试: 这个例子只是实际代码的一个例子.... 我想做的是不可能的吗?还是我走错路了? 谢谢大家:)
现在有另一个类调用 为了对进行单元测试,我们使用了以下方法 我的问题是如何验证同伴方法是否被调用。
如何模拟返回已强制转换的模拟对象的方法。 试验方法。