莫基托 - 当然后返回

2022-09-01 18:21:22

我是Mockito库的新手,我无法理解以下语法:在我定义的测试之前 -

when(CLASS.FUNCTION(PARAMETERS)).thenReturn(RETURN_VALUE)

而实际的测试是——

assertSame(RETURN_VALUE, CLASS.FUNCTION(PARAMETERS))

难道我不只是将函数的返回值与第一行代码()设置为?如果答案是肯定的,那么当然会是真的,测试会通过,我在这里错过了什么?when... thenReturnRETURN_VALUEassertSame


答案 1

Mockito(或任何形式的模拟,实际上)的重点不是模拟你正在检查的代码,而是用模拟代码替换外部依赖项。

例如,假设您有这个简单的界面:

public interface ValueGenerator {
    int getValue();
}

这是你使用它的代码:

public class Incrementor {
    public int increment(ValueGenerator vg) {
        return vg.getValue() + 1;
    }
}

您希望在不依赖于 的任何特定实现的情况下测试逻辑。这就是Mockito发挥作用的地方:IncrementorValueGenerator

// 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));

答案 2

推荐