SuperAPI AI 工具集

unit-test-controller-layer

测试与质量

查看项目

更新于 10-16 08:48

技能介绍

用途:为 @RestController 和 @Controller 编写隔离的 Web 层单元测试,验证 REST 控制器的请求与响应处理,服务层通过 mock 代替。

主要能力:覆盖 GET、POST、PUT、PATCH、DELETE 等 HTTP 方法及对应状态码;使用 JsonPath 断言 JSON 响应、内容匹配器校验响应体;测试参数绑定(查询参数与路径变量)、请求体校验(无效输入返回 400 及错误详情)、异常场景(404、400、401、403、500);校验请求头(如 Authorization)与响应头;测试内容协商(不同 Accept 与 Content-Type)。

使用方式:需引入 spring-boot-starter-test(test 作用域)。用 MockMvcBuilders.standaloneSetup(controller) 构建隔离测试环境;用 @Mock 标注服务依赖、@InjectMocks 注入控制器;用 mockMvc.perform(...) 发起请求,配合 andExpect(status()...)、jsonPath(...)、header() 等断言,并用 verify(service).method(args) 校验 mock 交互。调试流程:测试失败时加 .andDo(print()) 打印实际响应,对照差异修正断言。

适用场景:控制器测试、API 端点测试、Spring MVC 测试、模拟 HTTP 请求、Web 层端点的隔离单元测试。

限制:控制器测试只验证 HTTP 处理,不覆盖完整请求流程;standaloneSetup() 在无完整上下文时可能不支持 @Validated;JsonPath 要求响应体为有效 JSON;@PreAuthorize/@Secured 需要额外配置,建议另写安全测试;文件上传需使用 MockMultipartFile。