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

Spring Boot控制器saveBooking方法单元测试失败问题求助

问题分析与解决方案

这问题其实很直观,核心原因就是字符串大小写不匹配导致的断言失败!

咱们来拆解一下:

  • 你的BookingController里,saveBooking方法返回的是全大写的字符串:return "SAVED";
  • 但单元测试BookingControllerTest里,断言的却是首字母大写、其余小写的字符串:.andExpect(content().string("Saved"));

Postman调用时你可能没留意这个大小写差异,或者说Postman只是验证接口能正常返回内容,不会做这么严格的精确字符串匹配,所以看起来功能正常;但MockMvc的content().string()是做精确完全匹配的,大小写不同自然就触发断言错误了。

修复方案(二选一即可)

方案1:修改测试代码的断言(推荐,保持业务代码逻辑不变)

把断言里的字符串改成和控制器返回一致的全大写:

mockMvc.perform(requestBuilder)
       .andDo(print())
       .andExpect(status().isOk())
       .andExpect(content().string("SAVED")); // 这里改成全大写

方案2:修改控制器的返回值(如果业务确实需要返回"Saved")

调整控制器的返回字符串:

return "Saved";

小提示

单元测试中的字符串断言一定要和接口实际返回的内容完全一致,包括大小写、空格、甚至特殊字符,MockMvc的精确匹配特性会严格校验每一个字符,这点在写测试时要格外注意哦~

内容的提问来源于stack exchange,提问作者Faheem azaz Bhanej

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 01:17:30