spring-boot - 无法模拟 crudrepository 保存方法
问题描述
@ExtendWith(MockitoExtension.class)
class taskTestMain {
@InjectMocks
task task1;
@Mock
private statusRepository statusRepo;
@Mock
status statusRec;
@Test
void test() {
Mockito.when(statusRepo.save(statusRec)).thenReturn(statusRec);
task1.method();
}
}
class task
{
method()
{
statusRec = statusRepo.save(statusRec); //after this step I get Potential stubbing exception
}}
我尝试了几种方法。我无法弄清楚这一点。请建议如何进行。下面我粘贴了junit错误。任务 - 严格的存根参数不匹配。请检查:
- 这个“保存”方法的调用:statusRepo.save(status@8bffb8b); -> 在 task.run(task.java:80)
- 具有以下具有不同参数的存根:1. statusRepo.save(status@26a2f7f9); -> at .taskTestMain.test(taskTestMain.java:110) 通常,存根参数不匹配表明用户在编写测试时出错。Mockito 早期失败,以便您可以轻松调试潜在问题。
谢谢你的时间
解决方案
老实说,我对此并不完全确定,但我有一个猜测。
Mockito.when(statusRepo.save(statusRec)).thenReturn(statusRec);
有了这个存根,您只想返回传递给save
方法的第一个参数?如果这是真的,那么有一种更通用的方法可以做到这一点。
when(statusRepo.save(any(TcMdhTotemConsensusStatus.class))).then(returnsFirstArg());
此存根将始终返回传递给您的save
方法的第一个参数。
有关更多信息,请参阅此 stackoverflow 帖子。如果您的 Java 或 Mockito 版本不匹配,还有一些替代方案。
推荐阅读
- python - 如何在fastapi中获取多个表单输入字段作为字典?
- python - 如何移动 JSON 中的日期以使日期相互冲突?
- python - 我如何除以列表 Y 中的变化?
- reactjs - 在反应中开发推送通知系统
- events - 谷歌日历 API。通过多个 extendProperty Private by Or 条件搜索事件
- javascript - 调用 toDataUrl() 时如何禁用 Fabric.js 中的图像平滑?
- angular - mat-tab-group - 将项目与中心、左右对齐
- flutter - 如何在颤振中获得半和完整的进度表
- mysql - 复合索引是否也适用于第二个字段的查询?
- java - Scala vs Java toUpperCase/toLowerCase