Rest Assured测试未识别Content-Type问题求助
最可能的原因:请求路径不匹配
你的Controller方法通过@RequestMapping(value = "/film")映射到了/film路径,但测试代码里请求的是/view/film?search=The%20Godfather——这意味着测试请求根本没命中你写的这个Controller方法,自然返回的不是预期的JSON响应,Content-Type也就为空了。
先把测试里的请求路径改成/film?search=The%20Godfather,这大概率能解决问题。
如果路径修正后仍有问题,试试这些排查点:
调整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")检查Spring的JSON消息转换器配置
确认你的项目中正确配置了JSON消息转换器(比如MappingJackson2HttpMessageConverter),并且引入了必要的依赖(比如Spring Boot项目的spring-boot-starter-web已经包含了Jackson依赖)。如果依赖缺失或配置错误,可能导致响应头的Content-Type设置异常(不过你浏览器能看到正确的头,这个可能性相对小)。查看完整的请求响应日志
在测试代码中加入日志打印,查看实际的请求和响应详情,确认是否有异常或非预期的响应:given().log().all() .when().get("/film?search=The%20Godfather") .then().log().all() .contentType(ContentType.JSON) .body("filmTitle", equalTo("The Godfather"));日志会帮你确认请求是否命中目标接口、响应头和响应内容是否符合预期,比如是否因为异常返回了HTML错误页等情况。
内容的提问来源于stack exchange,提问作者shirafuno

