Метод тестирования, имеющий CompletableFuture.allOf с использованием mockito - PullRequest
0 голосов
/ 24 сентября 2019

У меня есть метод doParallelThings:

public Dummy doParallelThings(Map<String, String> mapp) throws Exception {
        Dummy dummy = new Dummy();

        CompletableFuture<Ans1> one = firstService.getOne(mapp.get("some1"), mapp);
        CompletableFuture<Ans2> two = secondService.getTwo(headersMap.get("some2"), mapp);

        CompletableFuture<Void> combinedFuture = CompletableFuture.allOf(one, two);
        try {
            combinedFuture.get();
            dummy.setOne(one.get());
            dummy.setTwp(two.get());

        } catch (Throwable e) {

        }
        return dummy;
    }

Код работает нормально, но когда я пытаюсь его проверить, combinedFuture.get(); идет в бесконечный цикл.

Модульный тестниже:

@Mock
    private CompletableFuture<Void> ans;

@Test
    public void testDoParallelThings() throws Exception {

        PowerMockito.mockStatic(CompletableFuture.class);
        PowerMockito.when(CompletableFuture.allOf(any())).thenReturn(ans);
        when(ans.get()).thenReturn(null);

        Dummy dummy = dummyService. doParallelThings(mockMap);
        assertNotNull(dummy);
    }

Я также добавил @RunWith(PowerMockRunner.class) @PrepareForTest({CompletableFuture.class}) над тестовым классом.

Чего мне не хватает?

1 Ответ

1 голос
/ 24 сентября 2019

when(firstService.getOne(any(), any())).thenReturn(CompletableFuture.completedFuture(mockOne));

решил мою проблему

...