본문 바로가기
JavaSpringBoot/Error

HttpMediaTypeNotAcceptableException: No acceptable representation [406에러]

by notcherry 2023. 10. 10.

 

 

액세스 토큰 발급 테스트 코드 작성 중에 처음으로 406이란 에러를 발견했다. 

 

HttpMediaTypeNotAcceptableException 예외는 클라이언트가 요청한 미디어 타입이 서버에서 제공할 수 없을 때 발생한다. 

 

 

 	//when
        ResultActions resultActions = mockMvc.perform(post(url)
                .contentType(MediaType.APPLICATION_JSON_VALUE) 
                .content(requestBody));

        //then
        resultActions
                .andExpect(status().isCreated()) //에러 난 부분
                .andExpect(jsonPath("$.accessToken").isNotEmpty());

 

미디어 타입은 잘 설정했는데 컨트롤러에서 응답 설정에 문제가 있는 것 같았다.

 

 

 

해결

 

DTO 클래스에 @Getter을 붙임으로써 해결했다. 

 

@AllArgsConstructor
@Setter
@Getter
public class CreateAccessTokenResponse {
    private String accessToken;
}

DTO에 게터가 없으면 응답 내용에 값이 포함되지 않는 문제가 발생한다. 요청과 응답 간의 문제였다. 아직 스프링부트의 흐름에 대한 이해가 부족한 것 같다. 무작정 책만 보고 따라치다 놓친 부분인데 앞으로 더 유의하게 된 계기가 된 것 같다!

 

에러 해결! HAPPY