如何在Java中模拟MongoDB存储库方法

时间:2020-01-22 10:43:22

标签: java spring-boot mockito

我正在尝试在JUnit测试中模拟以下代码

requestData = requestRepository.findByRequestId(requestId);

这样做

@Mock
RequestRepository requestRepository;

@Mock
RequestData requestData;

Mockito.when(requestRepository.findByRequestId(requestId)).thenReturn(requestData);

但是我没有返回模拟对象,而是获得了空值。 模拟MongoDB存储库方法的正确方法是什么。

2 个答案:

答案 0 :(得分:0)

如果您不知道这种情况下的请求ID值(它可能是动态值),可以使用Mock.any(<?>.class)

示例:

Mockito.when(requestRepository.findByRequestId(Long.class)).thenReturn(requestData);

以上示例仅适用于Long类型的requestId,如果需要整数,则需要将类更改为Integer

答案 1 :(得分:0)

使用基于 SpringRunner 的测试时,请使用@MockBean声明上下文bean的模拟。