如何确保模拟对象在mockito中只调用一次

时间:2013-11-14 07:01:09

标签: java loops mocking mockito

我有一个while循环如下

while (nodeIterator.hasNext())

我已经模拟了这个方法hasNext返回true,这样我就可以在while循环中测试代码,但现在问题是每次返回true并且这个循环永远不会结束。请告诉我,无论如何,我可以确保只调用一次此方法,如果没有,那么在首次执行后如何返回false

2 个答案:

答案 0 :(得分:10)

我得到了答案,我们可以通过以下方式做到这一点

when(nodeIterator.hasNext()).thenReturn(true).thenReturn(false);

这被称为方法存根。同样,如果你想调用它两次,然后你想返回false,那么按以下步骤操作

when(nodeIterator.hasNext()).thenReturn(true).thenReturn(true).thenReturn(false);

答案 1 :(得分:4)

请参阅OngoingStubbing.thenReturn(T,T...)

这样你可以返回一系列调用的值。

when(nodeIterator.hasNext()).thenReturn(true,false);

在第一次调用时返回true,在每次后续调用时返回false。

相关问题