【发布时间】:2020-10-20 07:30:57
【问题描述】:
我对此完全陌生。请原谅我对这方面的原始知识。 所以,这是我正在测试的一段代码
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)吗?
请帮帮我吗?
【问题讨论】:
标签: java unit-testing for-loop mockito powermockito