0

我有一个具有以下结构的类

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>);

需要返回值,因为我需要存根/验证一些实例方法。

有人可以帮我解决这个问题吗?

4

1 回答 1

2

您可以模拟实例以及静态方法,并使模拟的静态方法返回对模拟实例的引用。就像是:

MyClass mock = PowerMock.mockClass(MyClass.class);

PowerMock.mockStaticClass(MyClass.class);
Mock.when(MyClass.getInstance()).thenReturn(mock);

(我从未使用过 PowerMock,所以语法可能略有错误......)

于 2011-09-16T09:00:18.720 回答