액세스 토큰 발급 테스트 코드 작성 중에 처음으로 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에 게터가 없으면 응답 내용에 값이 포함되지 않는 문제가 발생한다. 요청과 응답 간의 문제였다. 아직 스프링부트의 흐름에 대한 이해가 부족한 것 같다. 무작정 책만 보고 따라치다 놓친 부분인데 앞으로 더 유의하게 된 계기가 된 것 같다!