在升级到新发布2.2.0.RELEASE
的Spring Boot版本之后,我的一些测试失败了。似乎MediaType.APPLICATION_JSON_UTF8
已弃用了,并且不再从未显式指定内容类型的控制器方法中将其作为默认内容类型返回。
测试代码如
String content = mockMvc.perform(get("/some-api")
.contentType(MediaType.APPLICATION_JSON))
.andExpect(status().isOk())
.andExpect(content().contentType(MediaType.APPLICATION_JSON_UTF8))
.andReturn()
.getResponse()
.getContentAsString();
突然不再工作,因为内容类型不匹配,如下所示
java.lang.AssertionError: Content type
Expected :application/json;charset=UTF-8
Actual :application/json
更改代码以.andExpect(content().contentType(MediaType.APPLICATION_JSON))
解决此问题。
但是现在content
,与预期的序列化对象进行比较时,如果对象中有任何特殊字符,则仍然不匹配。似乎.getContentAsString()
默认情况下(不再)该方法不使用UTF-8字符编码。
java.lang.AssertionError: Response content expected:<[{"description":"Er hörte leise Schritte hinter sich."}]> but was:<[{"description":"Er hörte leise Schritte hinter sich."}]>
Expected :[{"description":"Er hörte leise Schritte hinter sich."}]
Actual :[{"description":"Er hörte leise Schritte hinter sich."}]
如何获得content
UTF-8编码?