หลังจากฉันอัพเกรดเป็น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 ได้อย่างไร