web-dev-qa-db-ja.com

Future ofリストを返す外部依存関係のモック

リストの未来を返す外部依存関係を持つクラスがあります。外部依存関係をモックする方法は?

 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

未来を作成し、thenReturn()を使用してそれを返すことができます。以下のケースでは、すでに完成したFuture<List<String>>を使用してCompletableFuture

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

別の方法として、未来も模倣することができます。このような方法の利点は、あらゆる動作を定義できることです。

たとえば、タスクがキャンセルされた場合のケースをテストするとします。

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