返回 Future of 列表的模拟外部依赖关系

2022-09-03 10:05:53

我有一个具有外部依赖关系的类,该类返回列表的未来。如何模拟外部依赖关系?

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

答案 1

您可以创建未来并使用 返回它。在下面的例子中,我使用创建了一个已完成的。thenReturn()Future<List<String>>CompletableFuture

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

答案 2

作为替代方式,您也可以嘲笑未来。这种方式的好处是能够定义任何行为。

例如,您希望在任务被取消时测试一个案例:

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

推荐