gpt4 book ai didi

java - 为什么 JUnit 在模拟返回 CompletableFuture 对象的方法调用时未完成

转载 作者:行者123 更新时间:2023-12-02 08:39:08 24 4
gpt4 key购买 nike

public class A{
@Autowired
B b;
public List<String> method1(){
CompletableFuture<List<String>> completableFuture = b.getCompletableFutureList();
// further processing
// returning a list of strings
return completableFuture.get();
}
}

@RunWith(MockitoJUnitRunner.class)
public class TestA{
private A cut;
@Mock B b;
List<String> prepareStringList(){
List<String> stringList = new ArrayList<>();
stringList.add("Random String");
return stringList;
}
CompletableFuture<List<String>> prepareCompletableStringList(){
CompletableFuture<List<String>> completableFuture = new CompletableFuture<>();
completableFuture.completedFuture(prepareStringList);
return completableFuture;
}

@Test
public void method1Test(){
when(b.getCompletableFutureList()).thenReturn(prepareCompletableStringList);
List<String> list = cut.method1();
//verifications()
}
}

在这个类中,我想模拟方法调用 getCompletableFutureList() 并希望返回一个自定义的 CompletableFutureObject。请告诉我我的 JUnit 方法是否完全错误。因为简单地在我的测试类中模拟 CompletableFuture 我的测试既没有失败也没有通过。如果我错了,正确的方法是什么。我的 Junit 也不会终止。

最佳答案

CompletableFuture.completedFuture 是一个静态方法,它返回一个新的已完成的 CompletableFuture。相反,您想要的是 CompletableFuture.complete,它将终止当前的 CompletableFuture。

关于java - 为什么 JUnit 在模拟返回 CompletableFuture 对象的方法调用时未完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61498049/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com