为什么当模拟方法调用返回CompletableFuture对象时,JUnit不完成?

问题描述 投票:0回答:1
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也没有终止。

java junit completable-future
1个回答
1
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.