リストの未来を返す外部依存関係を持つクラスがあります。外部依存関係をモックする方法は?
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")
未来を作成し、thenReturn()
を使用してそれを返すことができます。以下のケースでは、すでに完成したFuture<List<String>>
を使用してCompletableFuture
。
when(f1.methNew(anyString()))
.thenReturn(CompletableFuture.completedFuture(Arrays.asList("A", "B", "C")));
別の方法として、未来も模倣することができます。このような方法の利点は、あらゆる動作を定義できることです。
たとえば、タスクがキャンセルされた場合のケースをテストするとします。
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);