MockMvc 사용시 LocalDateTime 배열 직렬화 문제 해결
2024. 2. 22. 13:47ㆍJAVA/Spring
상황
Spring Framework에서 WebMvcTest를 수행하던중에 MockMvc를 이용하여 LocalDateTime 타입의 데이터를 Json 직렬화시 배열로 나오는 문제가 발생하였습니다. 예를 들어 다음은 어떤 특정한 종목의 지정가 알림 배열을 직렬화한 결과입니다.
"targetPrices":[
{
"notificationId":1,
"targetPrice":60000,
"dateAdded":[2024,2,22,13,40,0,766630000]
},
{
"notificationId":2,
"targetPrice":70000,
"dateAdded":[2024,2,22,13,40,0,766630000]
}
]
위 직렬화 결과를 보면 dateAdded의 값이 "2024-02-22T13:40:00.766630000"이 아닌 배열 형태인 것을 볼 수 있습니다.
원인
MockMvc 인스턴스 초기화시 Jackson 인스턴스를 주입해주지 않아서입니다.
해결 방법
MockMvc 인스턴스 초기화시 setMessageConverters 메소드를 호출하며 ObjectMapper 인스턴스를 전달합니다.
mockMvc = MockMvcBuilders.standaloneSetup(stockTargetPriceNotificationRestController)
.setControllerAdvice(globalExceptionHandler)
.setCustomArgumentResolvers(authPrincipalArgumentResolver)
.setMessageConverters(new MappingJackson2HttpMessageConverter(objectMapper))
.alwaysDo(print())
.build();
'JAVA > Spring' 카테고리의 다른 글
SpringBoot 3.1 TestContainer (0) | 2024.05.13 |
---|---|
SpringBoot 2.7 TestContainer (0) | 2024.05.13 |
Spring Framework Filter 등록 (0) | 2024.01.28 |
빈 생명주기 콜백 (0) | 2023.05.10 |
@Qualifier, @Primary를 사용하여 스프링 빈 조회 (0) | 2023.05.06 |