【发布时间】:2020-01-22 10:43:22
【问题描述】:
我试图在我的 JUnit 测试中模拟以下代码
requestData = requestRepository.findByRequestId(requestId);
通过做
@Mock
RequestRepository requestRepository;
@Mock
RequestData requestData;
Mockito.when(requestRepository.findByRequestId(requestId)).thenReturn(requestData);
但我没有返回模拟对象,而是得到了 null 值。 模拟 MongoDB 存储库方法的正确方法是什么。
【问题讨论】:
-
这是正确的方法。可能您在测试执行期间的
requestId值与用于模拟调用的值不同。 -
但不是提供模拟 requestData 对象,而是转到 mongodb 并从那里获取数据。我希望它发回模拟对象。
-
我知道
@Mock仅在您调用MockitoAnnotations.initMocks(this);或使用@RunWith(MockitoJUnitRunner.class)时才有效。如果您的测试直接进入数据库是因为您可能正在使用SpringRunner运行,它正在启动您的完整应用程序,这实际上是一个集成测试 -
是的,我正在使用 SpringRunner 所以有没有办法从数据库中获取模拟对象而不是实际数据。
-
@JuanRada '@MockBean' 工作!!谢谢。
标签: java spring-boot mockito