Spring中用Map<Long,String>模拟文件下载单元测试报400错误求助
Spring文件下载单元测试400错误排查线索
- 请求参数不匹配:检查测试请求的参数(如文件ID)与Controller接口定义是否一致,比如Controller用
@PathVariable Long id,测试是否传了非Long类型参数或参数名错误,导致Spring无法绑定参数返回400。 - 模拟文件路径无效:确认Map中对应ID的文件路径是否合法,比如路径为空、不存在,或是Controller中有路径校验逻辑(如判断路径是否为null、格式是否合规),触发参数校验失败返回400。
- 请求方法不匹配:确认测试使用的请求方法(GET/POST)与Controller注解(
@GetMapping/@PostMapping)一致,方法不匹配会直接返回400或405。 - 缺少必要请求头:部分文件下载接口要求特定请求头(如
Accept类型),若测试未设置,服务器可能因无法处理请求格式返回400。 - 参数校验注解触发:若Controller参数加了
@NotNull/@Min等校验注解,测试传参不符合要求(如ID为null、负数)会触发校验失败,返回400,检查校验逻辑。 - Mock环境配置问题:若使用
MockMvc,确认其初始化是否正确加载了目标Controller,或是Mock服务层返回的数据不符合预期,导致Controller提前抛出参数相关异常。 - 查看响应体详情:不要只关注状态码,用MockMvc的
andReturn()获取并打印响应体,里面通常包含具体错误信息(如"参数id不能为空"),可直接定位问题。
内容的提问来源于stack exchange,提问作者Siva
相关产品推荐
相关产品推荐

