Mockito.when一个多层调用的方法怎么写
时间: 2024-01-26 10:01:47 浏览: 163
java.Mock工具Mockito.md
您可以使用 Mockito 的链式调用来模拟多层调用的方法。例如,假设您有一个名为 `userService` 的服务,该服务中有一个名为 `getUserAddress` 的方法,该方法将调用另一个名为 `addressService` 的服务中的方法。您可以使用以下代码模拟这两个方法的调用:
```
// 创建 Mock 对象
UserService userService = Mockito.mock(UserService.class);
AddressService addressService = Mockito.mock(AddressService.class);
// 模拟 getUserAddress 方法
Mockito.when(userService.getUserAddress(Mockito.anyLong())).thenAnswer(invocation -> {
Long userId = invocation.getArgument(0);
Address address = addressService.getAddress(userId);
return address;
});
// 模拟 getAddress 方法
Mockito.when(addressService.getAddress(Mockito.anyLong())).thenReturn(new Address("123 Main St."));
```
在上面的代码中,我们首先创建了 `UserService` 和 `AddressService` 的 Mock 对象。然后,我们使用 `when` 方法来模拟 `getUserAddress` 方法的调用。在模拟 `getUserAddress` 方法时,我们使用了 `thenAnswer` 方法来自定义方法的行为。在该方法中,我们获取了 `getUserAddress` 方法的参数,并使用 `addressService` 来获取用户的地址。最后,我们返回了模拟的地址对象。
接下来,我们使用 `when` 方法来模拟 `getAddress` 方法的调用。在模拟 `getAddress` 方法时,我们使用了 `thenReturn` 方法来指定方法的返回值。
通过这种方式,我们可以模拟多层调用的方法并指定它们的行为。
阅读全文