Spring Boot结合Mock的Controller单元测试实现方法与问题修正咨询
Spring Boot 控制器层Mock测试编写问题梳理
当前学习与落地现状
- 已通过教程观看、官方技术资料阅读开展控制器单元测试编写方法的学习,暂未完全掌握核心逻辑
- 基于Spring Boot框架结合Mock技术尝试编写测试用例,对现有代码的正确性存在疑问,希望获得专业指导
相关代码现状
被测控制器逻辑
- 通过
@Autowired注入UserDetailsServiceImpl、ShopService、GameService三类业务依赖 - 对外暴露路径为
/userProfile的@GetMapping接口 - 接口处理流程:从
SecurityContextHolder中提取当前登录用户的认证信息,向Model中依次添加当前用户、用户已创建队伍、用户已加入队伍、用户参与游戏、用户参与群组游戏、用户获得奖励等属性,最终返回user/profile视图
已编写测试类现状
- 通过
@Autowired注入MockMvc实例,用于模拟接口请求 - 使用
@MockBean声明UserDetailsServiceImpl、ShopService、UserRepository、DataUserRepository的模拟实例 - 在
@BeforeEach的前置初始化方法中完成User、Team等测试实体的构造,但存在未实例化DataUser对象就直接调用其setter方法的隐患
当前编写测试用例的核心困惑
- 请求方法不匹配:被测接口为GET类型,编写测试用例时误用POST方法发起请求
- 复杂参数传递不清晰:仅掌握字符串类型请求参数的传递方法,不清楚如何在请求中传入
DataUser这类非字符串类型的参数 - 视图断言错位:测试中断言匹配的视图名称与接口实际返回的视图名称不匹配,不确定当前测试实现是否存在逻辑错误
内容的提问来源于stack exchange,提问作者user13666376
相关产品推荐
相关产品推荐

