Spring Boot Junit 유닛 테스트 MockMvc 사용 (MockHttpServletRequestBuilder MvcResult Model AndView json)
6040 단어 코드 노트
이 예 를 들 어 get 과 post 는 쿠키, 인자, 대상, 폼 제출, url 경로 제출 을 요청 합 니 다.
@ ModelAttribute, @ RequestBody 전송 대상
반환 대상 MockHttpServletRequestBuilder 가 져 오기 MvcResult ModelAndView, 보기 / json / 문자열 분석 되 돌려 주기
일부러 필 기 를 하 는 것 도 나중에 복습 하 는 데 편리 하 다.
유닛 테스트 상자 에 필요 한 주입 이 있어 야 작은 프레임 이 나 옵 니 다.
@RunWith(SpringRunner.class)
@SpringBootTest
public class domeTest {
@Autowired
private WebApplicationContext context;
protected MockMvc mvc;
@Before
public void setUp() {
mvc = MockMvcBuilders.webAppContextSetup(context).build();
}
@Test
public void doem() {
}
}
1. 각종 요청 참여
//
//post
MockHttpServletRequestBuilder post = MockMvcRequestBuilders.post("/test");
//get
MockHttpServletRequestBuilder get = MockMvcRequestBuilders.get("/test");
//post Cookie
MockHttpServletRequestBuilder post_cookie = MockMvcRequestBuilders.post("/test")
.cookie(new Cookie("cookieName","value"));//
//get Cookie
MockHttpServletRequestBuilder get_cookie = MockMvcRequestBuilders.post("/test")
.cookie(new Cookie("cookieName","value"));//
//post session
MockHttpServletRequestBuilder post_cookie_session = MockMvcRequestBuilders.post("/test")
.sessionAttr("sessionName","value");
//get session
MockHttpServletRequestBuilder get_cookie_session = MockMvcRequestBuilders.get("/test")
.sessionAttr("sessionName","value");
//post Cookie
// @ModelAttribute("formName") form
// :
// @PostMapping("/submitOrder")
// public ModelAndView submitOrder (@ModelAttribute("orderForm") ServiceProductOrder serviceProductOrder)
MockHttpServletRequestBuilder post_cookie_par = MockMvcRequestBuilders.post("/test")
.cookie(new Cookie("cookieName","value"))//
.param("userName","admin")// @RequestParam , input name value
.param("pass","admin");// @ModelAttribute
//get Cookie ( )
MockHttpServletRequestBuilder get_cookie_par_one = MockMvcRequestBuilders.post("/test")
.cookie(new Cookie("cookieName","value"))//
// @RequestParam , input name value
.param("userName","admin")
.param("pass","admin");
//get Cookie (url )
MockHttpServletRequestBuilder get_cookie_par_two = MockMvcRequestBuilders.post("/test?userName=admin&pass=admin")
.param("pass","admin");
//post Cookie
// : @RequestBody
// :@PostMapping("/submitOrder")
// public ModelAndView submitOrder (@RequestBody ServiceProductOrder serviceProductOrder) {
Admin admin=new Admin();
admin.setLoginName("admin");
admin.setLoginPassword("admin");// .
MockHttpServletRequestBuilder post_cookie_obj = MockMvcRequestBuilders.post("/test")
.cookie(new Cookie("cookieName","value"))//
.contentType(MediaType.APPLICATION_JSON).content(JSONObject.toJSONString(admin));// json
//MultipartFile
String filename = "images/sy_02.png";//
InputStream inStream = getClass().getClassLoader().getResourceAsStream(filename);
MockMultipartFile mfile = new MockMultipartFile("file", "sy_02.png", "png", inStream);
MockMultipartHttpServletRequestBuilder file = MockMvcRequestBuilders.multipart("/file/upload").file(mfile);
2. 각종 요청 응답 처리
MockHttpServletRequestBuilder( MockMultipartHttpServletRequestBuilder) , , RequestBuilder
// MvcResult (mvc , )
//request MockHttpServletRequestBuilder
MvcResult mvcResult = mvc.perform(request).andReturn();
//
int status = mvcResult.getResponse().getStatus();//500 302 404 200
// @ResponseBody json :
// : 500/400/302 HTML String
String contentAsString = mvcResult.getResponse().getContentAsString();
// ModelAndView
// : model.setViewName("/index");
ModelAndView mv = mvcResult.getModelAndView();
String url=mv.getViewName(); // /index
// ModelAndView state
// model.addObject("state", 1);
ModelAndView mv = mvcResult.getModelAndView();
Map model = mv.getModel();
Integer state = (Integer) model.get("state");
// ModelAndView /map/
// PageInfo list=new PageInfo<>();
// model.addObject("AdminList", list);
ModelAndView mv1 = mvcResult.getModelAndView();
Map model1 = mv1.getModel();
((PageInfo) model1.get("AdminList")).getList().size();// list
ps: 돌아 오 는 제 이 슨 문자열 은 개인 적 으로 JSONobject 로 바 꾸 는 것 을 좋아 합 니 다. 게다가 Assert 단언 으로 사용 하 는 것 도 편리 합 니 다.
JSONObject jsonObject = JSONObject.parseObject(jsonString);
Assert.assertEquals(0,jsonObject.getIntValue("code"));
코드 를 쓸 때 넘 긴 자료:
Junit 테스트 컨트롤 러 (MockMVC 사용), 전송 @ RequestBody 데이터 해결 방법
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Spring Boot Junit 유닛 테스트 MockMvc 사용 (MockHttpServletRequestBuilder MvcResult Model AndView json)프로젝트 에 서 는 MockMvcRequestBuilders 라 는 종 류 를 사용 하여 유닛 테스트 를 실현 합 니 다. 이 예 를 들 어 get 과 post 는 쿠키, 인자, 대상, 폼 제출, url 경로 제출 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.