completablefuture+mock
时间: 2023-12-05 17:41:34 浏览: 60
使用CompletableFuture和Mockito可以很好地进行异步代码的单元测试。下面是一个使用CompletableFuture和Mockito进行单元测试的例子:
```java
@Test
public void testCompletableFutureWithMockito() throws Exception {
// 创建mock对象
AnotherService anotherService = mock(AnotherService.class);
// 创建CompletableFuture对象
CompletableFuture<String> completableFuture = CompletableFuture.supplyAsync(() -> {
// 调用mock对象的方法
return anotherService.someMethod("input");
});
// 设置mock对象的返回值
when(anotherService.someMethod("input")).thenReturn("mockString");
// 阻塞等待CompletableFuture执行完成并获取结果
String result = completableFuture.get();
// 验证结果是否正确
assertEquals("mockString", result);
}
```
在这个例子中,我们首先创建了一个mock对象AnotherService,然后使用CompletableFuture.supplyAsync()方法创建了一个CompletableFuture对象。在CompletableFuture的回调函数中,我们调用了mock对象的方法。接着,我们使用Mockito.when()方法设置了mock对象的返回值。最后,我们阻塞等待CompletableFuture执行完成并获取结果,然后使用assertEquals()方法验证结果是否正确。