web-dev-qa-db-fra.com

Fausse dépendance externe qui renvoie un avenir de liste

J'ai une classe qui a une dépendance externe qui retourne l'avenir des listes. Comment se moquer de la dépendance externe?

 public void meth() {
     //some stuff
     Future<List<String>> f1 = obj.methNew("anyString")
     //some stuff
 }

 when(obj.methNew(anyString()).thenReturn("how to intialise some data here, like list of names")
10
user304611

Vous pouvez créer le futur et le renvoyer en utilisant thenReturn(). Dans le cas ci-dessous, je crée un Future<List<String>> Déjà complété en utilisant CompletableFuture.

when(f1.methNew(anyString()))
        .thenReturn(CompletableFuture.completedFuture(Arrays.asList("A", "B", "C")));
13
Todd

Vous pouvez également vous moquer de l'avenir. L'avantage d'une telle méthode est la capacité de définir n'importe quel comportement.

Par exemple, vous souhaitez tester un cas lorsqu'une tâche a été annulée:

final Future<List<String>> mockedFuture = Mockito.mock(Future.class);
when(mockedFuture.isCancelled()).thenReturn(Boolean.TRUE);
when(mockedFuture.get()).thenReturn(asList("A", "B", "C"));

when(obj.methNew(anyString()).thenReturn(mockedFuture);
8
Dmytro Maslenko