使用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)中?

请帮我吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)