我有一个具有以下结构的课程
public class MyClass{
private MyClass(){
}
public static MyClass getInstance(){
return new MyClass();
}
//some instance method.
}
使用powermock我能够模拟" MyClass"如下。
PowerMock.mockStaticClass(Myclass.class);
但是当有人在MyClass上调用getInstance()时,我无法返回任何有效对象。 即,我如何填写以下空格。
Mock.when(MyClass.getInstance()).thenReturn(<What do I return here>);
需要返回值,因为我需要存根/验证一些实例方法。
有人可以帮我解决这个问题吗?
答案 0 :(得分:2)
您可以模拟实例以及静态方法,并使模拟的静态方法返回对模拟实例的引用。类似的东西:
MyClass mock = PowerMock.mockClass(MyClass.class);
PowerMock.mockStaticClass(MyClass.class);
Mock.when(MyClass.getInstance()).thenReturn(mock);
(我从未使用过PowerMock,因此语法可能有点错误......)