【问题标题】:PowerMockito returns null when mock constrtuctor is defined for any arguments当为任何参数定义模拟构造函数时,PowerMockito 返回 null
【发布时间】:2016-04-13 16:44:28
【问题描述】:

我一直试图弄清楚 PowerMockito 的构造函数模拟是怎么回事。我的代码类似于以下:

public void testConstruction() {
    whenNew(Account.class).withAnyArguments().thenReturn(mock(Account.class));
    assertNotNull(new Account("name")); //fails
}

我不确定在哪里可以找到导致此问题的原因。使用上面的存根代码,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】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-03
      • 2017-05-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多