Почему JUnit не завершает sh, когда высмеивается вызов метода, который возвратил объект CompletableFuture - PullRequest
1 голос
/ 29 апреля 2020
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 в моем тестовом классе, ни мой тест не проходит, ни проходит. И если я не прав Каков правильный подход. Мой джунит тоже не заканчивается.

1 Ответ

1 голос
/ 29 апреля 2020

CompletableFuture.completedFuture - это метод stati c, который возвращает новое завершенное CompletableFuture. Вместо этого вам нужен CompletableFuture.complete, который завершит текущее CompletableFuture.

...