새로 출시 된 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 인코딩은 어떻게받을 수 있습니까?