230802 테스트 코드 결과 status 415

보트·2023년 8월 3일
0

Spring

목록 보기
24/27

Controller 테스트 코드

메모를 생성하는 기능을 테스트하기 위한 코드
status code 201로 기대했지만 415가 반환

@PostMapping("")
    public ResponseEntity<MemoResponseDto> createMemo(@RequestBody MemoRequestDto requestDto, @AuthenticationPrincipal UserDetailsImpl userDetails) {
        MemoResponseDto result = memoService.createMemo(requestDto, userDetails.getUser());
        return ResponseEntity.status(201).body(result);
    }

시도

// when - then
        mvc.perform(post("/api/memos")
                        .content(memoInfo)
                        .contentType(MediaType.APPLICATION_JSON)
                        .principal(mockPrincipal))
                .andExpect(status().isCreated());    // 415 나옴
jakarta.servlet.ServletException: Request processing failed: org.springframework.http.converter.HttpMessageConversionException: Type definition error: [simple type, class com.example.springmemoreview.memo.dto.MemoRequestDto]

accept를 contentType으로 바꿔봤더니
이전과는 다른 type definition error가 발생

  • contentType : 요청과 응답 모두 보낼 데이터의 형식을 알려주는 헤더
  • accept : 클라이언트에서 서버로 요청시 요청메세지에 담기는 헤더
@Test
    @DisplayName("컨트롤러 - 메모 불러오기")
    void getMemosTest() throws Exception {
        mvc.perform(get("/api/memos")
                        .accept(MediaType.APPLICATION_JSON)
                )
                .andExpect(status().isOk());
    }

같은 컨트롤러 안에 반환타입이 같은 get 요청의 테스트는 통과하는 것으로 보아 post로 보낸 내용에 문제가 있는 듯 함

profile
일주일에 한 번

1개의 댓글

comment-user-thumbnail
2023년 8월 3일

좋은 정보 얻어갑니다, 감사합니다.

답글 달기