我是靠谱客的博主 追寻豌豆,最近开发中收集的这篇文章主要介绍mockito 多层调用_连续调用的Mockito迭代器样式存根,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

mockito 多层调用

Sometimes we want to mock different responses for the consecutive calls on the same method. We can create then* methods chain with when() to specify iterator style stubbing in Mockito.

有时,我们想对同一方法的连续调用模拟不同的响应。 我们可以使用when()创建then*方法链,以在Mockito中指定迭代器样式存根。

Mockito存根连续呼叫 (Mockito Stubbing Consecutive Calls)

Let’s look at a simple example of mocking exception and return a response when a method is called with same parameters. We will use JUnit 5 assertions to verify the stubbed methods.

让我们看一个模拟异常的简单示例,并在使用相同参数调用方法时返回响应。 我们将使用JUnit 5断言来验证存根方法。

UpdateUtils mockUU = mock(UpdateUtils.class);
when(mockUU.update("Data"))
.thenThrow(new RuntimeException())
.thenReturn("DATA");
assertThrows(RuntimeException.class, () -> mockUU.update("Data"));
assertEquals("DATA", mockUU.update("Data"));
//further calls will return the last mocked output
assertEquals("DATA", mockUU.update("Data"));

Notice that once the mocking chain reaches the end, further calls will return the last mocked response.

注意,一旦模拟链到达末尾,进一步的调用将返回最后的模拟响应。

We can also provide different responses in the thenReturn() method through varargs.

我们还可以通过varargs在thenReturn()方法中提供不同的响应。

when(mockUU.update("Emp")).thenReturn("EMP", "EMPLOYEE", "EMP1");
assertEquals("EMP", mockUU.update("Emp"));
assertEquals("EMPLOYEE", mockUU.update("Emp"));
assertEquals("EMP1", mockUU.update("Emp"));
assertEquals("EMP1", mockUU.update("Emp"));

This is useful in the cases where we want to mock different response in multiple executions of the same method. Note that if we define multiple methods stubbing with same arguments, then the last one will override the earlier ones.

在我们要模拟同一方法的多次执行中的不同响应的情况下,这很有用。 请注意,如果我们定义了多个使用相同参数进行存根的方法,则最后一个将覆盖较早的方法。

Mockito迭代器方法存根 (Mockito Iterator Methods Stubbing)

We can use this approach to stub an Iterator. Let’s have a look at a simple example of stubbing iterator methods through consecutive calls.

我们可以使用这种方法对迭代器进行存根。 让我们看一个通过连续调用对迭代器方法进行存根的简单示例。

Iterator<Integer> mockIter = mock(Iterator.class);
when(mockIter.hasNext()).thenReturn(true, true, true, false);
int[] values = new int[] {1,2,3,4};
when(mockIter.next()).thenReturn(values[0], values[1], values[2], values[3]);
int index = 0;
while(mockIter.hasNext()) {
assertTrue(values[index] == mockIter.next());
index++;
}
GitHub Repository. GitHub存储库中查看完整的代码和更多Mockito示例。

翻译自: https://www.journaldev.com/21964/mockito-iterator-style-stubbing-consecutive-calls

mockito 多层调用

最后

以上就是追寻豌豆为你收集整理的mockito 多层调用_连续调用的Mockito迭代器样式存根的全部内容,希望文章能够帮你解决mockito 多层调用_连续调用的Mockito迭代器样式存根所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(61)

评论列表共有 0 条评论

立即
投稿
返回
顶部