java如何使用Mockito测试此方法?
我有一个在不同对象之间进行复杂交互的方法,我想使用Mockito框架来测试它。我希望有一些指导方针。我知道代码没有多大意义
两个getInstance()
方法都是静态的。我想模拟obj3并使if语句在测试中返回true
public MyRequest getRequest(ObjectOne obj1, ObjectTwo obj2) {
ObjectThree obj3 = FactoryOne.getInstance().getList().getObject(obj2.getId());
if(FactoryTwo.getInstance().isFlagSet("flag")){
....
}
return new MyRequest(....);
}
# 1 楼答案
实际上,为
obj3
变量赋值而调用的方法是不可直接测试的根本原因是
getInstance()
这是一种静态方法事实上,
FactoryOne.getInstance()
应该是被测试类的依赖项,返回的对象应该是接口通过这种方式,您可以定义设置依赖项的构造函数:
并替换:
作者:
在应用程序代码中,可以调用构造函数:
在测试代码中,您可以为
Foo
接口创建一个模拟,通过构造函数将其设置为测试下的类:然后记录
getList()
的模拟行为,以返回另一个模拟对象,该对象具有在测试中调用getObject()
所需的值