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")
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")));
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);