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

使用MockMvc测试Drone接口遇ContentType未设置错误的排查与解决

解决MockMvc测试POST接口时AssertionError: ContentType not set问题

问题场景

使用JUnit、MockMvc、SpyBean和Captor测试一个保存Drone对象的POST接口:

  • 接口通过@PostMapping配置了consumes = MediaType.APPLICATION_JSON_VALUE和produces = MediaType.APPLICATION_JSON_VALUE
  • 测试时抛出断言错误:java.lang.AssertionError: ContentType not set

排查原因

看似是ContentType未正确设置,但实际是请求未通过应用的安全校验,接口返回了Unauthorized(401)响应——这类响应通常不会携带Content-Type: application/json头,导致MockMvc的断言逻辑报错。

解决方案

在测试方法上添加@WithMockUser(username = "foo")注解,模拟一个已认证的用户身份,让请求通过安全校验:

@Test
@WithMockUser(username = "foo")
void testSaveDrone() throws Exception {
    // 测试逻辑代码
}

添加后请求会正常进入接口处理流程,返回符合配置的JSON响应,ContentType not set的错误即可解决。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 07:45:34