Gyuseok
Dreaming_developer
Gyuseok
  • 분류 전체보기 (39)
    • Note (0)
    • TIL (8)
    • 일상 (1)
    • git & git hub (1)
    • Algorithm (14)
    • JAVA (5)
    • Spring & SpringBoot (10)
    • 기업연계 프로젝트 (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록
  • 관리자
  • 티스토리
  • 글작성

공지사항

인기 글

태그

  • 내일배움카드
  • MegabyteSchool
  • java
  • 패스트캠퍼스
  • pattern
  • lombok
  • 메가바이트스쿨
  • 국비지원교육
  • Builder
  • 개발자취업부트캠프

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
Gyuseok

Dreaming_developer

Spring & SpringBoot

MockMVC

2023. 1. 13. 13:42

MockMVC는 Spring MVC 프레임워크에서 사용되는 테스트 헬퍼 클래스입니다. 이 클래스를 사용하면 컨트롤러에 대한 테스트를 쉽게 수행할 수 있고, 실제 서블릿 컨테이너를 구동하지 않고도 컨트롤러에 대한 테스트를 수행할 수 있습니다.

MockMVC를 사용하면 테스트에서 컨트롤러에 대한 요청과 응답을 쉽게 처리할 수 있으며, 이를 통해 컨트롤러가 올바르게 작동하는지 확인 할 수 있습니다.

 

Spring MVC 애플리케이션에서 MockMVC를 사용하려면 먼저 MockMVC 클래스의 인스턴스를 생성해야 합니다. 이를 위한 방법은 여러 가지가 있지만, 가장 일반적인 방법은 standaloneSetup() 메소드를 사용하는 것입니다. 이 메소드는 Spring MVC 테스트 헬퍼인 MockMvcBuilders 클래스에서 제공하며, 이를 사용하면 컨트롤러 클래스를 전달하여 MockMVC 인스턴스를 생성할 수 있습니다.

예를 들어, 아래와 같이 컨트롤러 클래스를 전달하여 MockMVC 인스턴스를 생성할 수 있습니다.

MockMvc mockMvc = MockMvcBuilders.standaloneSetup(new MyController()).build();

이제 생성된 mockMvc 인스턴스를 사용하여 컨트롤러에 대한 요청과 응답을 테스트 할 수 있습니다. 예를들어, 아래와 같이 GET 요청을 테스트 할 수 있습니다.

mockMvc.perform(get("/myEndpoint"))
                .andExpect(status().isOk())
                .andExpect(content().string("Hello World!"));

여기서 mockMvc.perform() 메소드는 요청을 수행하며, 그 결과를 ResultActions 객체로 반환합니다. 그리고 andExpect() 메소드를 사용하여 응답의 상태 코드, 컨텐츠 등을 검증할 수 있습니다. 이렇게 하면 컨트롤러가 올바르게 작동하는지 테스트 할 수 있습니다.

또한, mockMvc.perform()메소드를 사용하여 다양한 요청을 수행 할 수 있습니다. 그 외에도 post, put, delete 등의 요청을 수행 할 수 있습니다. 이를 통해 컨트롤러에 대한 테스트를 쉽게 수행 할 수 있습니다.

 

요청 파라미터를 사용하는 테스트도 수행할 수 있습니다. 아래 예제에서는 요청 파라미터로 name 이라는 파라미터를 전달하고, 응답 결과를 검증하는 테스트를 수행합니다.

mockMvc.perform(get("/myEndpoint")
                .param("name", "Gyuseok"))
                .andExpect(status().isOk())
                .andExpect(content().string("Hello Gyuseok!"));

또한, Request Body를 사용하는 테스트를 수행할 수도 있습니다. 아래 예제에서는 POST 요청을 수행하고, Request Body를 전달하는 테스트를 수행합니다.

String requestBody = "{\"name\":\"Gyuseok\"}";
mockMvc.perform(post("/myEndpoint")
                .contentType(MediaType.APPLICATION_JSON)
                .content(requestBody))
                .andExpect(status().isOk())
                .andExpect(content().string("Hello Gyuseok!"));

이외에도, 다양한 테스트 케이스를 작성 할 수 있는데, 이는 개발하는 애플리케이션의 특성에 따라 달라질 수 있습니다.

 

andDo() 메소드는 응답 결과를 처리하는 방법을 정의할 수 있는 메소드 입니다. 이를 사용하면 응답 결과를 가공하거나 저장하는 등의 작업을 수행 할 수 있습니다.

예를 들어, 응답 결과를 JSON 형식으로 변환하는 작업을 하려면 아래와 같이 andDo() 메소드를 사용하면 됩니다.

MvcResult mvcResult = mockMvc.perform(get("/myEndpoint"))
                .andDo(print())
                .andReturn();
String responseBody = mvcResult.getResponse().getContentAsString();

이렇게 하면 responseBody 변수에 응답 결과가 저장됩니다.

그리고 andDo(print())를 사용하면 응답 결과를 콘솔에 출력 할 수 있습니다.

mockMvc.perform(get("/myEndpoint"))
                .andDo(print())
                .andExpect(status().isOk());

'Spring & SpringBoot' 카테고리의 다른 글

HashTag 검색 SQL 구현해보기  (0) 2023.01.27
Spring security 시작하기  (0) 2023.01.20
SpringBoot JPA 사용하기  (0) 2022.12.30
SpringBoot Swagger UI사용하기  (0) 2022.12.19
Spring AOP  (0) 2022.12.16
    'Spring & SpringBoot' 카테고리의 다른 글
    • HashTag 검색 SQL 구현해보기
    • Spring security 시작하기
    • SpringBoot JPA 사용하기
    • SpringBoot Swagger UI사용하기
    Gyuseok
    Gyuseok

    티스토리툴바