Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java iterable.iterator().hasNext()在模拟行为后返回false_Java_Mockito - Fatal编程技术网

Java iterable.iterator().hasNext()在模拟行为后返回false

Java iterable.iterator().hasNext()在模拟行为后返回false,java,mockito,Java,Mockito,我模拟了一个iterable,并为iterable.iterator()和iterable.iterator().next()和iterable.iterator().hasNext()添加了when条件 我可以打印并看到调用时,iterable.iterator()为我提供了一个迭代器,但是hasNext()似乎在模拟它之后返回false 下面是我如何模拟迭代器和Iterable // mock iterator final Iterator mockIterator = Mockito.mo

我模拟了一个iterable,并为
iterable.iterator()
iterable.iterator().next()
iterable.iterator().hasNext()添加了when条件

我可以打印并看到调用时,
iterable.iterator()
为我提供了一个迭代器,但是
hasNext()
似乎在模拟它之后返回false

下面是我如何模拟
迭代器
Iterable

// mock iterator
final Iterator mockIterator = Mockito.mock(Iterator.class);
final Iterable mockIterable = Mockito.mock(Iterable.class);
Mockito.when(mockIterator.hasNext()).thenReturn(true, false);
Mockito.when(mockIterator.next()).thenReturn(mockGoogleAdsRow);
Mockito.when(mockIterable.iterator()).thenReturn(mockIterator);
Mockito.when(searchPagedResponse.iterateAll()).thenReturn(mockIterable);
我在代码中有这个for循环,需要测试(验证)

谢谢你的帮助

编辑:
searchPagedResponse
是这样被嘲笑的

searchPagedResponse = Mockito.mock(GoogleAdsServiceClient.SearchPagedResponse.class);
mockGoogleAdsRow = Mockito.mock(GoogleAdsRow.class);
Mockito.when(mockGoogleAdsServiceClient.searchPagedCallable()).thenReturn(callable);
Mockito.when(mockGoogleAdsServiceClient.searchPagedCallable().call(searchGoogleAdsRequest)).thenReturn(searchPagedResponse);

我认为简单的方法就是这样做,而不是模仿迭代器

Mockito.when(searchPagedResponse.iterateAll()).thenReturn(Arrays.asList(mockGoogleAdsRow));
不知道为什么模仿迭代器会失败,
但是我最近开始使用Java,非常简单的事情,我一直在用各种方法来做。

如何模拟
searchPagedResponse
响应
response
searchPagedResponse
是相同的对象吗?是的
response
searchPagedResponse
是相同的对象
Mockito.when(searchPagedResponse.iterateAll()).thenReturn(Arrays.asList(mockGoogleAdsRow));