Mockito中能否模拟空响应体?Repository空返回Mock实现方法
Mockito 模拟无查询结果场景的写法
你需要根据employeeRepository.findEmployeeByName()方法的定义返回类型,对应传入thenReturn()的参数,常见场景分为三类:
- 场景1:方法返回值为
Optional<Employee>类型(Spring Data JPA 单实体查询的标准写法)
查询无匹配数据时返回空Optional容器,直接传入Optional.empty()即可,不要传null,否则后续业务层调用Optional.isPresent()、orElseThrow()等方法时会直接抛出空指针,示例代码:when(employeeRepository.findEmployeeByName(NAME_1)).thenReturn(Optional.empty()); - 场景2:方法返回值为普通
Employee实体类型,接口约定查询无结果时返回null
直接在thenReturn()中传入null即可:when(employeeRepository.findEmployeeByName(NAME_1)).thenReturn(null); - 场景3:方法返回值为集合类型(如
List<Employee>、Set<Employee>)
查询无结果时返回对应类型的空集合即可,不要传null,避免业务层遍历集合时触发空指针:// 返回空List when(employeeRepository.findEmployeeByName(NAME_1)).thenReturn(Collections.emptyList()); // 如果方法返回Set就传入Collections.emptySet()
补充说明:你提到的「API返回空响应体」是控制层/业务层封装HTTP响应的逻辑,Mock数据库仓储层时不需要关心这层逻辑,只需要严格按照
findEmployeeByName方法本身的签名约定,返回对应类型的空值即可。
内容的提问来源于stack exchange,提问作者Brian
相关产品推荐
相关产品推荐

