반응형

mockMvc 사용준비

@Autowired
SampleController sampleController;

private MockMvc mockMvc;

@Before
public void 기본() throws Exception{
	mockMvc = MockMvcBuilders.standaloneSetup(sampleController).build();

}

 

기본 get 방식 test

@Test
public void get_sample() throws Exception{
    RequestBuilder reqBuilder = MockMvcRequestBuilders.get("/test" + 1)
    .param("param1", param1)
    .param("param2", param2)
    .param("param3", param3);
    this.mockMvc.perform(reqBuilder).andExpect(status().isOk()).andDo(print());
}

post @requestBody 요청

public static final MediaType APPLICATION_JSON_UTF8 = new MediaType(MediaType.APPLICATION_JSON.getType(), MediaType.APPLICATION_JSON.getSubtype(), Charset.forName("utf8"));

@Test
public void 제이슨_바디리퀘스트() throws Exception{
   RequestBuilder reqBuilder = MockMvcRequestBuilders.post("/test/" + 1)
                 .header("header1", header1)
                 .header("header2" , header2)
                 .contentType(APPLICATION_JSON_UTF8)
                 .content(requestJson);

   this.mockMvc.perform(reqBuilder).andExpect(status().isOk()).andDo(print());
}

메소드 사용법

andDO

요청에 대한 처리를 합니다. print() 메소드가 일반적입니다.

.andDo(print())

andExpert

예상값을 검증합니다. assert* 메소드들과 유사합니다.

// status 값이 정상인 경우를 기대하고 만든 체이닝 메소드 중 일부입니다.
.andExpect(status().isOk())
// contentType을 검증합니다.
.andExpect(content().contentType("application/json;charset=utf-8"))

andReturn

테스트 클래스에서 작성은 안했지만 테스트한 결과 객체를 받을 때 사용합니다.

MvcResult result = this.mockMvc.perform(get("/"))
.andDo(print())
.andExpect(status().isOk())
.andExpect(model().attributeExists("serverTime"))
.andReturn();
반응형

+ Recent posts