0
A
回答
1
代碼:
@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調用返回不同的嘲弄一個非常方便的方式。
這樣你也可以很容易地讓第二次調用拋出異常,第三次調用再次工作,能夠測試第二次調用的異常將被處理,例如第三次結果仍然會被處理。
使用真正的列表是一個選項,但我認爲嘲笑更強大,代碼更緊密地針對您實際需要的特定測試。
相關問題
- 1. 如何使用OCMock獲取模擬對象列表
- 2. 在Mockito中註釋模擬對象
- 3. 如何迭代匿名對象列表?
- 4. 你如何迭代對象列表?
- 5. 迭代獲取ke /值對的對象列表
- 6. python迭代對象列表
- 7. 迭代對象列表
- 8. 如何在JSTL中的對象列表上迭代對象?
- 9. 如何從模板中的對象矢量獲取迭代器?
- 10. 如何獲取模板對象矢量上的迭代器?
- 11. 通過對象迭代對象列表
- 12. 調用mockito中的模擬對象
- 13. 初始化模擬對象 - MockIto
- 14. Mockito注入模擬間諜對象
- 15. Java測試與mockito:模擬類對象
- 16. Mockito模擬對象返回null
- 17. Mockito模擬方法內的對象
- 18. 使用Mockito模擬日期對象
- 19. Mockito - 方法內的模擬對象
- 20. 在Ibatis中迭代對象列表
- 21. Mockito在創建模擬對象時拋出NullPointer
- 22. 如何迭代對象列表並分配子對象?
- 23. 如何迭代對象模型的值?
- 24. 如何用Mockito模擬Thread.class?
- 25. 如何在NSEnumerator迭代中獲取當前對象的索引?
- 26. 如何判斷對象是否爲Mockito模擬?
- 27. mockito如何創建模擬對象的實例
- 28. 如何使用Mockito/PowerMockito模擬Kotlin的對象?
- 29. 如何正確使用Mockito模擬對象
- 30. 迭代對象並獲取名稱
看看[這篇文章](http://whyjava.wordpress.com/2012/03/11/quick-tip-on-mockito-mocking-iterator/) – eebbesen
除非你有一個特定的原因,不要使用一個真正的'List'(例如它在一個小單元測試中必然很大),使用一個真正的'List'並添加模擬對象。 Java集合定義良好,經過良好測試,因此您不應該嘲笑它們。 –
該答案也非常有用https://stackoverflow.com/a/43067304/3800377 –