我对Mockito很新,我有一个无法找到解决方案的情况。我想用Mockito测试一种方法。问题是在这个方法中,有一个对象被创建,而该对象有一个我想要模拟的函数。
例如,这里有一个小示例代码,说明了我的问题:
public class ClassA {
public functionDoingDBStuff() {
//...........
}
}
public class ClassB {
final ClassA classAObj = null;
public functionXYZ() {
classAObj = new ClassA();
classAObj.functionDoingDBStuff();
}
}
@Test
MyTestFunction() {
ClassB classBObj = new ClassB();
// How can I access and mock functionDoingDBStuff() here?
}
所以在MyTestFunction()
中,我想测试functionXYZ()
,但是模拟在functionDoingDBStuff()
内调用的函数functionXYZ()
。通过模拟,我的意思是返回我想要测试的特定结果。但是,函数functionDoingDBStuff()
属于functionXYZ()
内创建的对象,因此我不知道如何告诉Mockito从MyTestFunction()
内访问它。我希望你能理解我的意思。
答案 0 :(得分:0)
如果一段代码不能轻易测试,表明代码结构存在问题,请告诉我。无论如何,为什么new ClassA()
需要在functionXYZ
内完成?无法在对象级别实例化(更好地注入)?如果是这样,你可以注入一个ClassA的模拟实例。
如果仍然需要在方法中实例化,可能不是在执行new ClassA()
,而是应该包含在工厂方法中。然后你可以模拟工厂返回模拟ClassA
。