Spring

[Spring] Controller 테스트 코드 작성하기

kimslab01 2024. 9. 13. 15:28

 

 

1. @WebMvcTest

  • 여러 스프링 테스트 어노테이션 중 Web(Spring MVC)에 집중할 수 있는 어노테이션
  • @SpringBootTest는 모든 빈을 로드하기 때문에 Controller 레이어만 테스트하고 싶다면 @WebMvcTest를 사용하는 것을 권장
  • 선언할 경우 밑의 내용만 스캔하도록 제한
    • @Controller
    • @ControllerAdvice
    • @JsonComponent
    • Converter / GenericConverter
    • Filter
    • WebSecurityConfiguerAdapter
    • WebMvcConfiguer
    • HandlerMethodArgumentResolver

 

 

 

2. MockMvc

  • 스프링 MVC 테스트의 시작점
  • 이 클래스를 통해 HTTP의 GET, POST, PUT, DELETE에 대한 API 테스트가 가능

 

 

 

3. @MockBean

  • 가짜 객체를 만들어 컨테이너가 주입할 수 있도록 해줌
  • 가짜 객체이므로 실제 행위를 않음
  • Mockito, BDDMockito를 사용하여 원하는 행위를 할 수 있도록 정의

 

 

 

4. MockMvc의 메서드

  1. perform()
    • HTTP를 요청
    • 체이닝이 지원되어 여러 검증을 이어서 선언 가능
  2. andExcept()
    • mvc.perform의 결과를 검증
    • status(): 상태 코드 검증
    • view(): 리턴하는 뷰에 대해 검증
    • redirectedUrl(): 리다이렉트 url을 검증
    • model(): 컨트롤러의 model에 관해 검증
    • content(): 응답에 대한 정보 검증
    • jsonPath(): response body에 들어갈 json 데이터 검증
  3. andDo()
    • 요청/응답 전체 메시지 확인 가능