[英]Mocking a static method call inside iterator using Mockito
我对此完全陌生。 请原谅我对这方面的原始知识。 所以,这是我正在测试的一段代码
private static void updateRules(String id) throws IOException {
// Make list
List<String> select = Arrays.asList(
ID,
NAME,
APP_RULES,
RULE_CONFIG);
// Fetch list
List<Map<String, Object>> entries = StaticUtil.list(select, id);
// Iterate over the entries
for (Map<String, Object> obj : entries) {
// Call create
CreateStaticUtils.create();
}
}
我试图模拟这个函数的行为,
@RunWith(PowerMockRunner.class)
@PrepareForTest(StaticUtil.class)
class MyTest {
private Iterator<String> listIterator;
@SuppressWarnings("unchecked")
@Test
public final void testUpdateRules() throws IOException {
PowerMockito.mockStatic(StaticUtil.class);
PowerMockito
.when(StaticUtil.list(Mockito.anyListOf(String.class),
Mockito.anyString()))
.thenReturn(Mockito.anyList());
PowerMockito.verifyStatic(Mockito.times(1));
listIterator = mock(Iterator.class);
when(listIterator.hasNext()).thenReturn(<**Confused here**>)
}
我不确定如何验证CreateStaticUtils.create() call inside the iterator
。
如何在内部模拟和验证相同的交互?
另外,我是否必须把它也作为@PrepareForTest(CreateStaticUtils.class)
?
请帮我一样吗?
你真的有必要嘲笑它吗? 如果静态方法(类)实现不在外部 API 中,您肯定可以在此测试或任何用于创建此实例的工厂中创建测试类的实例,并像正常功能一样对其进行测试,无需模拟
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.