使用链接 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());
在 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());