使用链接 OngoingStubbing Mockito?

Use of chaining OngoingStubbing Mockito?

在 Mockito 中,当我们尝试模拟方法调用时,假设我们配置这样的东西

when(exampleClass.getOutputString(anyString())).thenReturn("output1");

这都可以理解。但是我的问题是这个thenReturn("output1")方法returns一个OngoingStrubbing对象的原因是什么(与when(exampleClass.getOutputString(anyString()))方法returns相同),所以我们可以做这样的事情

when(exampleClass.getOutputString(anyString())).thenReturn("output1").thenReturn("output2");

when(exampleClass.getOutputString(anyString())).thenReturn("output1").thenThrow(new IllegalArgumentException());

然而,以上两种情况,当使用 mock 时,它只是 returns "output1" 而已。任何人都知道,为什么存在这种链接功能,它有什么用途?同样的事情也适用于 doReturn()

这意味着第一次调用给出 ouput1,第二次调用给出 output2,依此类推。

when(exampleClass.getOutputString(anyString())).thenReturn("output1").thenReturn("output2");

,第二个你需要在目标测试中达到一个条件 class 所以给出

output1 对于第一种情况,但在第二种情况下你想测试失败,例如

try-catch 子句或查看代码是否涵盖异常情况

when(exampleClass.getOutputString(anyString())).thenReturn("output1").thenThrow(new IllegalArgumentException());