有返回值的方法里调用了 void方法
时间: 2024-03-14 18:43:19 浏览: 49
有返回值的函数
如果您需要测试的方法中调用了一个 void 方法,您可以使用 Mockito 的 `doAnswer()` 方法来模拟该 void 方法的行为,并返回您需要的值。假设您有以下类:
```
public class MyService {
public int doSomething() {
doSomethingElse();
return 42;
}
public void doSomethingElse() {
// do something else
}
}
```
现在,如果您想测试 `doSomething()` 方法,但 `doSomething()` 方法中调用了 `doSomethingElse()` 方法,您可以使用 Mockito 的 `doAnswer()` 方法来模拟 `doSomethingElse()` 方法的行为,如下所示:
```
MyService myService = mock(MyService.class);
doAnswer(invocation -> {
// 在这里执行您想要模拟的行为
return null;
}).when(myService).doSomethingElse();
int result = myService.doSomething();
assertEquals(42, result);
```
在这个例子中,我们首先创建了一个 `MyService` 的 mock 对象 `myService`。然后,使用 `doAnswer()` 方法来模拟 `doSomethingElse()` 方法的行为。在 `doAnswer()` 方法中,您可以执行您想要模拟的行为,并返回您需要的值。在这个例子中,我们没有返回任何值,因为 `doSomethingElse()` 方法是 void 类型的。最后,我们调用 `myService.doSomething()` 方法来测试 `doSomething()` 方法,并验证它是否返回了我们期望的值。
阅读全文