[Spring] mockMvc getContentAsString 한글 깨지는문제

klmin·2024년 10월 13일
0

버전 : 3.3.4
jdk : 21

다음과같이 테스트코드 작성중에 한글이 깨지는 문제가 발생하였다.
Body는 정상적으로 보이는데 getContentAsString 후에 출력결과에서 한글이 깨지고 있었다.

디버깅을 해보니
MockHttpServletResponse의 기본 characterEncoding이 "ISO-8859-1" 로 선언되어있어 발생하는 문제였다.

해결방법

해결방법으로는 몇가지가 있다.

  1. getContentAsString에 선언
    characterEncodingSet은 기본적으로 false 선언되있으므로
    getContentAsString에시 Charset을 지정하는 방법이다.

  2. UTF-8 전역 필터 적용

MockHttpServletResponse.class
필터에서 setCharacterEncoding 호출.

  1. application.yml 인코딩 설정으로 전역 적용


스프링부트에서 자동으로 구성하는 HttpEncodingAutoConfiguration 클래스에서 인식한다.

  1. MockMvcBuilderCustomizer 구현받아 MockHttpServletResponse 변경

@Component로 선언


MockMvcAutoConfiguration.class에서 mockMvcBuilder등록시
customize함수가 호출되서 적용된다.

커스텀 어노테이션이나 Import로 등록
@Component 어노테이션을 제거하고

어노테이션으로 등록하는 방법도 있고

필요한 class에 import 하는 방법도 있다.

profile
웹 개발자

0개의 댓글