728x90
Spring Test MockMvc의 한글 깨짐 처리
스프링에서 테스트 코드를 작성할 때 MockMvc
를 흔히 사용한다.
대략 아래와 같이 설정하고 사용한다.
변경일자 2022-04-19 수정MockMvc
를 보통 테스트코드를 작성할 때 사용할텐데,
@WebMvcTest
를 사용해서 mvc를 위한 테스트를 만들 수 있다.
//@SpringBootTest
@WebMvcTest(ApiController.class)
public class ApiControllerTest {
private MockMvc mockMvc;
@Autowired
private WebApplicationContext ctx;
@BeforeEach
public void setup() {
this.mockMvc = MockMvcBuilders.webAppContextSetup(ctx)
.alwaysDo(print())
.build();
}
@Test
public void aaa() throws Exception {
String keyword = "sports";
MvcResult result = this.mockMvc
.perform(
get("/api/search/" + keyword)
)
.andExpect(status().isOk());
}
}
위의 테스트 코드에서는 한글이 없으므로 아무 문제가 없는데, 아래와 같이 한글을 사용하면 깨진 한글이 Controller에 유입될 수 있으며, 결국 원하는 대로 동작하지 않게 된다.
@Test
public void aaa() throws Exception {
String keyword = "스포츠"; // 한글 사용
MvcResult result = this.mockMvc
.perform(get("/api/search/" + keyword))
.andExpect(status().isOk());
}
이 문제는 `MockMvc`를 설정할 때 `CharacterEncodingFilter`를 추가해주면 쉽게 해결할 수 있다.
@Before
public void setup() {
this.mockMvc = MockMvcBuilders.webAppContextSetup(wac)
.addFilters(new CharacterEncodingFilter("UTF-8", true)) // 필터 추가
.alwaysDo(print())
.build();
}
728x90
'Spring' 카테고리의 다른 글
Spring -> Spring Boot 마이그레이션 (0) | 2022.08.05 |
---|---|
[Spring] MockMvc Bean 주입 에러 (0) | 2022.08.04 |
[Spring] Spring Security (0) | 2022.08.03 |
의존성 주입 어노테이션 정리 (0) | 2022.08.03 |