Paz*_*Paz 7 java mocking mockito
我是Mockito库的新手,无法理解以下语法:在定义测试之前-
when(CLASS.FUNCTION(PARAMETERS)).thenReturn(RETURN_VALUE)
Run Code Online (Sandbox Code Playgroud)
实际测试是-
assertSame(RETURN_VALUE, CLASS.FUNCTION(PARAMETERS))
Run Code Online (Sandbox Code Playgroud)
我不是只用第一行代码(when... thenReturn)将函数的返回值设置为RETURN_VALUE吗?如果答案是肯定的,那当然assertSame是正确的,并且测试将通过,我在这里遗漏了什么?
Mur*_*nik 13
Mockito的目的(实际上是任何形式的模拟)不是模拟您要检查的代码,而是用模拟代码替换外部依赖项。
例如,考虑您具有以下简单接口:
public interface ValueGenerator {
int getValue();
}
Run Code Online (Sandbox Code Playgroud)
这是使用它的代码:
public class Incrementor {
public int increment(ValueGenerator vg) {
return vg.getValue() + 1;
}
}
Run Code Online (Sandbox Code Playgroud)
您想测试Incrementor逻辑,而不依赖于任何单独的实现ValueGenerator。这就是Mockito发挥作用的地方:
// Mock the dependencies:
ValueGenerator vgMock = Mockito.mock(ValueGenerator.class);
when(vgMock.getValue()).thenReturn(7);
// Test your code:
Incrementor inc = new Incrementor();
assertEquals(8, inc.increment(vgMock));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8317 次 |
| 最近记录: |