You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Rest Assured测试未识别Content-Type问题求助

Rest Assured无法识别Content-Type的排查与解决

最可能的原因:请求路径不匹配

你的Controller方法通过@RequestMapping(value = "/film")映射到了/film路径,但测试代码里请求的是/view/film?search=The%20Godfather——这意味着测试请求根本没命中你写的这个Controller方法,自然返回的不是预期的JSON响应,Content-Type也就为空了。

先把测试里的请求路径改成/film?search=The%20Godfather,这大概率能解决问题。


如果路径修正后仍有问题,试试这些排查点:

  1. 调整Content-Type的匹配方式
    Rest Assured的ContentType.JSON默认对应application/json,但你的实际响应头是application/json;charset=UTF-8。虽然Rest Assured默认支持宽松匹配,但有时候可以显式指定字符集来确保匹配:

    .then().contentType(ContentType.JSON.withCharset("UTF-8"))
    

    或者直接用完整的Content-Type字符串匹配:

    .then().contentType("application/json;charset=UTF-8")
    
  2. 检查Spring的JSON消息转换器配置
    确认你的项目中正确配置了JSON消息转换器(比如MappingJackson2HttpMessageConverter),并且引入了必要的依赖(比如Spring Boot项目的spring-boot-starter-web已经包含了Jackson依赖)。如果依赖缺失或配置错误,可能导致响应头的Content-Type设置异常(不过你浏览器能看到正确的头,这个可能性相对小)。

  3. 查看完整的请求响应日志
    在测试代码中加入日志打印,查看实际的请求和响应详情,确认是否有异常或非预期的响应:

    given().log().all()
           .when().get("/film?search=The%20Godfather")
           .then().log().all()
           .contentType(ContentType.JSON)
           .body("filmTitle", equalTo("The Godfather"));
    

    日志会帮你确认请求是否命中目标接口、响应头和响应内容是否符合预期,比如是否因为异常返回了HTML错误页等情况。

内容的提问来源于stack exchange,提问作者shirafuno

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 08:29:24