mockito when().thenAnswer() 怎么用
时间: 2024-02-06 15:10:16 浏览: 162
`when().thenAnswer()` 是 Mockito 中的一个方法,用于在 Mock 对象中模拟方法调用的返回值。它的使用方式是:
```
when(mockObject.methodCall()).thenAnswer(new Answer() {
@Override
public Object answer(InvocationOnMock invocationOnMock) throws Throwable {
// 实现自定义的返回值逻辑
}
});
```
其中,`methodCall()` 是被模拟的方法调用,`new Answer()` 是一个匿名内部类,用于实现自定义的返回值逻辑。
在 `answer()` 方法中,我们可以通过 `invocationOnMock` 参数获取到方法调用的参数列表,进而实现不同的返回值逻辑。例如,可以根据方法的参数返回不同的值,或者抛出异常等。
下面是一个示例代码:
```
public class Calculator {
public int add(int a, int b) {
return a + b;
}
}
@Test
public void testAdd() {
Calculator calculator = Mockito.mock(Calculator.class);
when(calculator.add(2, 3)).thenAnswer(new Answer() {
@Override
public Object answer(InvocationOnMock invocationOnMock) throws Throwable {
int a = (int) invocationOnMock.getArguments()[0];
int b = (int) invocationOnMock.getArguments()[1];
return a * b;
}
});
assertEquals(6, calculator.add(2, 3));
}
```
在这个例子中,我们模拟了 `Calculator` 类的 `add()` 方法,当参数为 2 和 3 时,我们返回它们的乘积 6。因此,最后的断言会通过。
阅读全文