Mock构造函数与constructor-args对象...对象

时间:2013-06-28 23:44:03

标签: constructor mockito powermock

我想在单元测试中模拟遗留对象。这是构造函数:

public Class LegacyClass{
    public LegacyClass(Object... obj) {
        super(obj);
    }
}

我尝试使用powerMock来模拟它:

whenNew(LegacyClass.class).withParameterTypes(Object.class).
withArguments(anyString(), anyString()).thenAnswer(new Answer<Object>(){
...//Answer impl code
});

以下是问题:

  1. 我应该将哪个类放入withParameterTypes()?
  2. 我可以将它放在@Before setup()吗?

1 个答案:

答案 0 :(得分:3)

使用Object[].class访问varargs参数的参数类型:

PowerMockito.whenNew(LegacyClass.class)
            .withParameterTypes(Object[].class)
            .withArguments(Mockito.anyString(), Mockito.anyString())
            .thenAnswer(new Answer<Object>() {
                public Object answer(InvocationOnMock invocation)
                        throws Throwable {
                    // your code
                }
            });

我测试过,这也适用于@Before方法。