MockMvc 사용시 LocalDateTime 배열 직렬화 문제 해결

2024. 2. 22. 13:47JAVA/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