MockMvc

박찬우·2024년 3월 23일
0

스프링

목록 보기
86/88

MockMvc

  • 스프링에서 제공하는 테스트 도구 중 하나로, 컨트롤러의 테스트를 지원하는 모듈이다
  • 서버를 띄우지 않고도 컨트롤러의 동작을 테스트할 수 있다
  • 브라우저에서 요청을 보낼 떄와 동일한 방식으로 HTTP 요청을 생성할 수 있으며, 이를통해 컨트롤러의 응답 결과를 검증할 수 있다
  • 컨트롤러에서 사용되는 다른 빈들을 Mock객체로 대체하여 테스트를 진행할 수 있다
  • 가장 중요한 역할을 하는 메서드는 perform()이다. 메서드의 선언부는 테스트 대상에 HTTP 메시지를 요청(RequestBulder)하고 실행 결과를 ResultActions에서 확인할 수 있다

요청 설정 메소드

  • param / params : 쿼리 스트링 설정
  • cookie : 쿠키 설정
  • requestAttr : 요청 스코프 객체 설정
  • sessionAtr : 세션 스코프 객체 설정
  • content : 요청 본문 설정
  • header / headers : 요청 헤더 설정
  • contentType : 본문 타입 설정

검증 메소드

  • andExpect : 비교할 검증 코드 입력(.andExpect(status().isOk())
    • status : 상태 코드 검증
    • header : 응답 header 검증
    • content : 응답 본문 검증
    • cookie : 쿠키 상태 검증
    • view : 컨트롤러가 반환한 뷰 이름 검증
    • redirectedUrl(Pattern) : 리다이렉트 대상의 경로 검증
    • model : 스프링 MVC 모델 상태 검증
    • request : 세션 스코프, 비동기 처리, 요청 스코프 상태 검증
    • forwardedUrl : 이동대상의 경로 검증

기타 메소드

  • andDo() : print, log를 사용할 수 있는 메소드
  • print() : 실행결과를 지정해준 대상으로 출력, default = System.out
  • log() : 실행결과를 디버깅 레벨로 출력, 레벨은 org.springframework.test.web.servlet.result

속성 및 사용법

  • 응답(일부만 여러개 더 있음)
    • isOk() : 상태 코드가 200인지 확인
    • isNotFount() : 404인지 확인
    • isMethodNotAllowed() : 405인지 확인
    • isInternalServerError() : 500인지 확인
    • is(int status) : 임의로 지정한 상태 코드인지 확인
  • 모델
    • .andExpect(model().atrribute("userId", "user"))
    • attributeExists(String key) : key에 해당하는 데이터가 model에 있는지 검증
    • attribute(String key, Object value1) : key에 해당하는 value가 입력해준 "value1"과 일치한지 확인
  • 뷰 이름
    • .andExpect(view().name("home"));
    • name(String viewName) : 응답된 뷰 이름이 viewName과 일치한지 확인
  • 리다이렉트
    • .andExpect(redirectedUrl("/user?name=user1"));
profile
진짜 개발자가 되어보자

0개의 댓글