如何使用 PowerMockito 模拟带有可变参数的构造函数?
How can I mock constructor with varargs using PowerMockito?
我有一颗豆子:
class Bean {
public Bean(String name, Integer number, Resource... resources ) {
// ...
}
}
我想模拟 bean 的构造函数。这是我的测试:
@Test
public void shouldReturnMockedBean() throws Exception {
PowerMockito.whenNew(Bean.class)
.withArguments(
Mockito.anyString(),
Mockito.anyInt(),
Mockito.<Resource>anyVararg()
).thenReturn(beanMock);
Bean bean = new Bean("abc", 1);
Assert.assertNotNull(bean);
}
我在测试中也使用了 PowerMockito
注释 class:
@RunWith(PowerMockRunner.class)
@PrepareForTest({Bean.class})
但是我得到一个错误 null
而不是我的模拟。我在这里做错了什么?
varargs 被设置为 null 而不是创建第一个元素为 null 的 varargs。
要修复它,请执行 Bean bean = new Bean("abc", 1, (Resource)null);
见this
但是,如果您打算不提供任何资源,则只需省略第三个参数。
我有一颗豆子:
class Bean {
public Bean(String name, Integer number, Resource... resources ) {
// ...
}
}
我想模拟 bean 的构造函数。这是我的测试:
@Test
public void shouldReturnMockedBean() throws Exception {
PowerMockito.whenNew(Bean.class)
.withArguments(
Mockito.anyString(),
Mockito.anyInt(),
Mockito.<Resource>anyVararg()
).thenReturn(beanMock);
Bean bean = new Bean("abc", 1);
Assert.assertNotNull(bean);
}
我在测试中也使用了 PowerMockito
注释 class:
@RunWith(PowerMockRunner.class)
@PrepareForTest({Bean.class})
但是我得到一个错误 null
而不是我的模拟。我在这里做错了什么?
varargs 被设置为 null 而不是创建第一个元素为 null 的 varargs。
要修复它,请执行 Bean bean = new Bean("abc", 1, (Resource)null);
见this
但是,如果您打算不提供任何资源,则只需省略第三个参数。