当为任何参数定义模拟构造器时,PowerMockito返回null

问题描述 投票:1回答:1

我一直在尝试弄清楚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
}
java unit-testing powermockito
1个回答
0
投票

我遇到了类似的问题。如果要模拟的类具有多个构造函数,则withAnyArguments的行为不符合预期。在我的情况下,用whenNew模拟的类有2个构造函数,而在创建此类的新实例时,我总是会得到null。 https://github.com/powermock/powermock/issues/891给出了一些提示,我切换到使用withArguments。

© www.soinside.com 2019 - 2024. All rights reserved.