CompletableFuture de la convivialité et de l'unité de test

Je suis en train d'apprendre à propos de java 8 CompletableFuture et fini avec cette.

Poing de tous, que pensez-vous de ces lignes de code? J'ai besoin d'envoyer une requête à différents services en parallèle, et puis attendre pour eux tous de la réponse et continuer à travailler.

//service A
CompletableFuture<ServiceAResponse> serviceAFuture = CompletableFuture.supplyAsync(
    () -> this.ServiceA.retrieve(serviceARequest), serviceAExecutorService
);

//service B
CompletableFuture<ServiceBResponse> serviceBFuture = CompletableFuture.supplyAsync(
    () -> this.ServiceB.retrieve(serviceBRequest), serviceBExecutorService
);

CompletableFuture.allOf(serviceAFuture, serviceBFuture).join();
ServiceAResponse responseA = serviceAFuture.join();
ServiceBResponse responseB = serviceBFuture.join();

Et même le code est en train de faire ce que je veux, je vais avoir des problèmes pour tester la classe où ce code est. J'ai essayé d'utiliser Mockito et faire quelque chose comme:

doAnswer(invocation -> CompletableFuture.completedFuture(this.serviceAResponse))
    .when(this.serviceAExecutorService)
    .execute(any());

Où les services d'un exécuteur testamentaire et de services, les réponses sont moqueurs, mais le test ne s'arrête jamais et que le thread s'attend toujours à quelque chose dans cette ligne

CompletableFuture.allOf(serviceAFuture, serviceBFuture).join();

Le moindre indice sur ce que je suis en manque ici? Merci!!!!

OriginalL'auteur Leo | 2017-01-25