-
@RestController에서 파라미터Spring_FrameWork 2018. 11. 28. 12:46
package org.zerock.controller;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.MediaType;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.context.web.WebAppConfiguration;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.setup.MockMvcBuilders;
import org.springframework.web.context.WebApplicationContext;
import org.zerock.domain.Ticket;
import com.google.gson.Gson;
import lombok.Setter;
import lombok.extern.log4j.Log4j;
@RunWith(SpringJUnit4ClassRunner.class)
//test for Controller
@WebAppConfiguration
@ContextConfiguration({"file:src/main/webapp/WEB-INF/spring/root-context.xml",
"file:src/main/webapp/WEB-INF/spring/appServlet/servlet-context.xml"})
//Java Config
@Log4j
public class SampleControllerTests {
@
Setter(onMethod_ = {@Autowired})
private WebApplicationContext ctx;
private MockMvc mockMvc;
@Before
public void setup() {
this.mockMvc = MockMvcBuilders.webAppContextSetup(ctx).build();
}
@Test
public void testConvert() throws Exception {
Ticket ticket = new Ticket();
ticket.setTno(123);
ticket.setOwner("Admin");
ticket.setGrade("AAA");
String jsonStr = new Gson().toJson(ticket);
log.info(jsonStr);
mockMvc.perform(post("/sample/ticket")
.contentType(MediaType.APPLICATION_JSON)
.content(jsonStr))
.andExpect(status().is(200));
}
}
convert()메서드를 테스트하기 위해서 작성
SampleController의 convert() 는 JSON으로 전달되는 데이터를 받아서 TIcket으로 변환합니다 .
이를 위해서는 해당 데이터가 JSON이라는 것을 명시해 줄 필요가 있습니다. MockMvc 는
contentType()을 이용하여 전달하는 데이터가 무엇인지 알려 줄수 있습니다. 코드네 Gson 라이브러리는 Java 객체를 Json 문자열로 변환하기 위해서 사용합니다 .
위의 코드를 실행하면 다음과 같이 전달되는 JSON 문자열이 Ticket 타입의 객체로 변환 된것을 볼 수 있습니다 .
기타 도구
Junit을 이용하는 방식 외에도 Tomcat을 구동하면 REST 방식을테스트 할수 있는 방법이 존재한다
Mac이나 리눅스는 curl(https://curl.haxx.se/)같은 도구를 이용할 수도 있고 , Java나 강종 언어로 개발된 라이브러리가 이용가능하다
최근에는 브라우저에서 직접 REST 방식을 태스트할수 있는 도구들있다
크롬 브라우저 앱스토에서 'REST client'검색
이런식으로 테스트 가능하다 .
'Spring_FrameWork' 카테고리의 다른 글
오류)junit test log가 안찍힐때 (0) 2018.12.04 Ajax 댓글 처리 (0) 2018.11.29 RESTController의 반환 타입 (0) 2018.11.28 BoardMapper.xml에서Criteria처리 (0) 2018.11.28 페이징 처리 (0) 2018.11.28