cod*_*bot 1 java junit mockito java-8
我有一个列表,我正在流式传输此列表以获取一些过滤数据,如下所示:
List<Future<Accommodation>> submittedRequestList =
list.stream().filter(Objects::nonNull)
.map(config -> taskExecutorService.submit(() -> requestHandler
.handle(jobId, config))).collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)
在编写测试时,我尝试使用来返回一些数据when():
List<Future<Accommodation>> submittedRequestList = mock(LinkedList.class);
when(list.stream().filter(Objects::nonNull)
.map(config -> executorService.submit(() -> requestHandler
.handle(JOB_ID, config))).collect(Collectors.toList())).thenReturn(submittedRequestList);
Run Code Online (Sandbox Code Playgroud)
我org.mockito.exceptions.misusing.WrongTypeOfReturnValue:
LinkedList$$EnhancerByMockitoWithCGLIB$$716dd84d cannot be returned by submit()出错了。如何使用正确的方法解决此错误when()?
您只能模拟单个方法调用,不能模拟整个流利的接口级联。
例如,你可以做
Stream<Future> fs = mock(Stream.class);
when(requestList.stream()).thenReturn(fs);
Stream<Future> filtered = mock(Stream.class);
when(fs.filter(Objects::nonNull).thenReturn(filtered);
Run Code Online (Sandbox Code Playgroud)
等等。
海事组织(IMO)真的不值得模拟整个过程,只需验证是否调用了所有过滤器并检查结果列表的内容即可。
| 归档时间: |
|
| 查看次数: |
418 次 |
| 最近记录: |