본문 바로가기
웹 개발/Back End

스프링 개념 정리(3)

by L3m0n S0ju 2022. 9. 1.

 

ObjectMapper

 

Java 객체를 Json 형식으로 매핑하거나 Json 형식을 Java 객체로 매핑할 때 사용하는 클래스다. 

 

 

 

 


MockMvc란?

 

MockMvc는 웹 어플리케이션을 애플리케이션 서버에 배포하지 않고 테스트용 MVC환경을 만들어 요청 및 전송, 응답기능을 제공해주는 유틸리티 클래스다.

 

 

다시 풀어서 이야기 하자.

 


내가 컨트롤러 테스트를 하고싶을 때 실제 서버에 구현한 애플리케이션을 올리지 않고(실제 서블릿 컨테이너를 사용하지 않고) 테스트용으로 시뮬레이션하여 MVC가 되도록 도와주는 클래스다!

 

 

 

 


 

 

🧐MockMvc 사용법

 

 

컨트롤러를 테스트한다고 가정하자!

class ControllerTest{
	
    @Autowired
    private MockMvc mockMvc; // mockMvc 생성
    
    @Test
    public void testController() throws Exception{
    	
        String jjson = "{\"name\": \"부대찌개\"}";
        
        //mockMvc에게 컨트롤러에 대한 정보를 입력하자.
        
        mockMvc.perform(
        get("test?query=food") //해당 url로 요청을 한다.
        .contentType(MediaType.APPLICATION_JSON) // Json 타입으로 지정
        .content(jjson) // jjson으로 내용 등록
        .andExpect(status().isOk()) // 응답 status를 ok로 테스트
        .andDo(print()); // 응답값 print
        )
        
        }
}
  1. MockMvc를 생성한다.
  2. MockMvc에게 요청에 대한 정보를 입력한다.
  3. 요청에 대한 응답값을 Expect를 이용하여 테스트한다.
  4. Expect가 모두 통과하면 테스트 통과
  5. Expect가 1개라도 실패하면 테스트 실패

 

 

 

 


 

 

 

Mock

 

- Mock이라는 단어를 사전에서 찾아보면 '테스트를 위해 만든 모형'을 의미한다.

- 테스트를 위해 실제 객체와 비슷한 모의 객체를 만드는 것을 모킹(Mocking)이라고 하며, 모킹한 객체를 메모리에서 얻어내는 과정을 목업(Mock-up)이라고 한다.

 

 

- 웹 애플리케이션에서 컨트롤러를 테스트할 때, 서블릿 컨테이너를 모킹하기 위해서는 @WebMvcTest를 사용하거나 @AutoConfigureMockMvc를 사용하면 된다.

 

 

 

 

 

 

 

댓글