java - Mockito When().thenReturn 返回一个迭代器

标签 java list iterator mockito

我试图从when().theReturn 返回一个迭代器,但我不断收到此错误:

org.mockito.exceptions.misusing.WrongTypeOfReturnValue: 
Itr cannot be returned by findAll()
findAll() should return List

这就是我想做的:

List<Client> iterList = mockClientList1.findAll();
final Iterator<Client> iter = newMockListClient.iterator();
when(iterList.iterator()).thenReturn(iter);

mockClientList1是一个ClientList对象,findAll()是一个返回Client列表的方法。我看到一篇关于 Mockito 关于 when.thenReturn 上堆叠方法的限制的帖子,但我不确定这是否是失败的原因?任何提示将非常感激。

最佳答案

如果你想这样做,你还需要为 findAll() 的返回值提供一个 stub 。

List<Client> mockList = mock(List.class)
when(mockClientList1.findAll()).thenReturn(mockList);
final Iterator<Client> iter = newMockListClient.iterator();
when(mockList.iterator()).thenReturn(iter);

但是除非有特定原因您只想仅 stub 迭代器,否则您也可以直接返回列表:

when(mockClientList1.findAll()).thenReturn(mockListClient);

关于java - Mockito When().thenReturn 返回一个迭代器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61102016/

相关文章:

c++ - 如何迭代字符串 vector 的 vector ? (c++)

java - 为我自己的列表创建迭代器时遇到问题

java - 从父类(super class)调用重写方法

java - 创建和使用数组

c++ - 如何将我的类对象插入到我的非 STL 列表中?

r - 将数据帧列表转换为 R 中的单个数据帧

python - 递归列表类型对象中 `__str__`方法的问题

c++ - 我的迭代器没有按照预期的方式工作

java - 如何使用不同的类作为方法中的参数

java - ConcurrentLinkedDeque 可以有固定大小并覆盖旧元素吗?