본문 바로가기
IT/Java

MockMvc Get, Post, Put, Delete 테스트

by 성준하이 2024. 8. 13.
반응형

우선 MockMVC에 대해서 알아보면.

어플리케이션을 서버에 배포없이도 스프링 MVC의 테스트를 진행할 수 있게 도와주는 클래스이다.

 

스프링 공홈에서는 아래와 같이 소개한다.

https://docs.spring.io/spring-framework/reference/testing/spring-mvc-test-framework.html

 

MockMvc :: Spring Framework

The Spring MVC Test framework, also known as MockMvc, provides support for testing Spring MVC applications. It performs full Spring MVC request handling but via mock request and response objects instead of a running server. MockMvc can be used on its own t

docs.spring.io

 

바로 간단하게 메서드별로 예제를 아래 적어보면,

 

Get
@Autowired
private MockMvc mockMvc;

@Autowired
private TestService testService;

@Test
@DisplayName("Get Test")
void findByNameTest() throws Exception {
     mockMvc
       .perform( get("/test/findbyname")
       .param("name", "thenice")
     )
     .andExpect(status().isOk())
     .andDo(print());

     Assertions.assertThat(testService.findByName("thenice").size()>=1);
}

 

Post
@Autowired
private MockMvc mockMvc;

@Autowired
private TestService testService;

@Test
@DisplayName("Post Test")
void insertTest() throws Exception {

     Map<String, String> input = new HashMap<>();
     // body에 json 형식으로 회원의 데이터를 넣기 위해서 Map을 이용한다.
     input.put("name", "thenice");
     input.put("email", "thenice@tistory.com");
     input.put("password", "12341234");

     mockMvc
       .perform( post("/test/findbyname")
       .contentType(MediaType.APPLICATION_JSON) 
       .content(objectMapper.writeValueAsString(input)))
     )
     .andExpect(status().isOk())
     .andDo(print());
}

 

Put
@Autowired
private MockMvc mockMvc;

@Autowired
private TestService testService;

@Test
@DisplayName("Put Test")
void modifyByNameTest() throws Exception {
     mockMvc
       .perform( put("/cust/modifybyname")
       .param("name", "thenice")
     )
     .andExpect(status().isOk())
     .andDo(print());

}

 

Delete
@Autowired
private MockMvc mockMvc;

@Autowired
private TestService testService;

@Test
@DisplayName("Delete Test")
void deleteByNameTest() throws Exception {
     mockMvc
       .perform( delete("/cust/modifybyname")
       .param("name", "thenice")
     )
     .andExpect(status().isOk())
     .andDo(print());

}

 

참고로 import 관련해서는 아래와 같다.

  • import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.delete;
  • import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
  • import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.put;
  • import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print;
  • import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
반응형

'IT > Java' 카테고리의 다른 글

ThreadPool Default  (21) 2024.08.15
자바에서 Thread 확인  (6) 2024.08.14
JPA 에서 containing(Contains, IsContaining)  (20) 2024.08.12
RequestParam 에서 @Valid 사용  (14) 2024.08.11
DatasSource Exclude 설정 관련(DataSourceAutoConfiguration)  (13) 2024.08.10

댓글