@Mock
Object obj;
List<Obejct obj> objs;
当我通过objs
迭代时,如何获得模拟对象OBJ?
代码:
@Mock
private Iterator<YourObject> iteratorMock;
//...
when(yourListMock.iterator()).thenReturn(iteratorMock);
when(iteratorMock.hasNext()).thenReturn(Boolean.TRUE, Boolean.TRUE,
Boolean.TRUE, Boolean.FALSE);
when(iteratorMock.next()).thenReturn(yourMock1, yourMock1, yourMock2);
正如您在代码中看到的那样,嘲笑迭代器是一种非常方便的方式,可以返回第二个模拟,第三,e.t.c呼叫。
这样,您也很容易让第二个呼叫抛出异常,并且第三个呼叫再次起作用,能够测试将处理第二个呼叫的例外,例如,第三个结果仍将处理。<<<<<<<<<<<<<<<</p>
使用真实列表是一个选项,但我认为嘲笑更强大,并且代码更凝结到您实际上需要的特定测试所需的内容。