버전 : 3.3.4
jdk : 21
다음과같이 테스트코드 작성중에 한글이 깨지는 문제가 발생하였다.
Body는 정상적으로 보이는데 getContentAsString 후에 출력결과에서 한글이 깨지고 있었다.
디버깅을 해보니
MockHttpServletResponse의 기본 characterEncoding이 "ISO-8859-1" 로 선언되어있어 발생하는 문제였다.
해결방법으로는 몇가지가 있다.
getContentAsString에 선언
characterEncodingSet은 기본적으로 false 선언되있으므로
getContentAsString에시 Charset을 지정하는 방법이다.
UTF-8 전역 필터 적용
MockHttpServletResponse.class
필터에서 setCharacterEncoding 호출.
스프링부트에서 자동으로 구성하는 HttpEncodingAutoConfiguration 클래스에서 인식한다.
@Component로 선언
MockMvcAutoConfiguration.class에서 mockMvcBuilder등록시
customize함수가 호출되서 적용된다.
커스텀 어노테이션이나 Import로 등록
@Component 어노테이션을 제거하고
어노테이션으로 등록하는 방법도 있고
필요한 class에 import 하는 방법도 있다.