我想使用Mockito模拟下面的代码片段。
Future<Optional<List<User>>> getUser =
executorService.submit(() -> userRepository.findById(user.getUserId()));
字符串
我已经尝试了下面的代码,但它没有工作
@Mock
private ExecutorService executorService;
@Mock
private userRepository userRepository;
when(executorService.submit(() -> userRepository.findById(USER_ID)))
.thenReturn(ConcurrentUtils.constantFuture(userList));
型
谁能给我一个给予解决方案?
3条答案
按热度按时间jexiocij1#
谢谢你的回答。我已经找到了解决这个问题的方法。
我们可以使用下面的代码片段来模拟执行器服务调用。
字符串
如果在方法调用中有多个ExecutorService调用,则可以通过将它们作为逗号分隔的列表添加到Mockito调用来模拟每个响应,如下所示。
型
5lwkijsr2#
只要mock立即返回结果(除非你让它暂时返回
Thread.sleep
),ExecutorService
中的调用本身就很快,因此结果被 Package 在Future
中。字符串
那么你根本不需要模仿
ExecutorService
,你想使用一个真实的服务,否则它就不会做它应该做的事情。icnyk63a3#
接受的答案对我不起作用,因为编译器一直告诉我将
any(Callable.class)
转换为Runnable
。所以,我用(类似于实现)来嘲笑它:字符串