Після того, як я перейшов до нещодавно випущеної 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?