[TIL] 테스트 중 HttpMessageConversionException: Type definition error 해결

김원겸·2024년 11월 13일

TIL

목록 보기
2/5

문제점

API개발 중 테스트 코드를 돌리다가 이런 에러가 나왔다.

분명 다른 API와 똑같이 개발하고 테스트 코드했는데 갑자기 문제가 발생해서 정말 원인을 찾기 어려웠다.

원인

테스트 코드에서 ObjectMapper가 @RequestBody를 바인딩할 때 기본 생성자를 사용하는데 이걸 찾지 못해서 생기는 문제였다.

이번 프로젝트에서 @Builder를 사용해 생성자를 정의하고 있었는데 Jackon이 @Builder를 인식하지 않고 기본적으로 인자 없는 생성자나 setter를 통해 값을 주입하려하기 때문이다.

해결

@NoArgsConstructor를 쓰면 해결되지만 이번 프로젝트에서는 @NoArgsConstructor 사용을 지양하고 있어서 다른 방법을 찾아야 했다.

해결 방법은 생성자 위에 @JsonCreator를 붙여주는 것이였다.
생성자에 @JsonCreator을 추가하면 Jackson이 역직렬화할 때 필드를 정확히 매핑할 수 있다.

마무리

해결은 했지만 왜 그 동안 이 문제가 발생하지 않았는지에 대해서는 찾지 못했다. 찾게 된다면 다시 한번 정리 해봐야 겠다

0개의 댓글