我一直在尝试弄清楚PowerMockito的构造函数模拟如何处理。我的代码类似于以下内容:
public void testConstruction() {
whenNew(Account.class).withAnyArguments().thenReturn(mock(Account.class));
assertNotNull(new Account("name")); //fails
}
我不确定在哪里寻找导致此问题的原因。使用上面的存根代码,当我使用no arguments调用构造函数时,PowerMockito仅返回由mock(Account.class)
创建的对象。就像我使用withNoArguments()
对其进行了存根。我确定我的测试类设置正确,因为通过了以下代码:
public void testConstruction() {
whenNew(Account.class).withArguments("name").thenReturn(mock(Account.class));
assertNotNull(new Account("name")); //passes
}
我遇到了类似的问题。如果要模拟的类具有多个构造函数,则withAnyArguments的行为不符合预期。在我的情况下,用whenNew模拟的类有2个构造函数,而在创建此类的新实例时,我总是会得到null。 https://github.com/powermock/powermock/issues/891给出了一些提示,我切换到使用withArguments。