MockMvc单元测试(Controller)
为偶尔收集问题所写
在写测试之前记得将
MockMvc mockMvc; 加上
MockMvc模板
MvcResult mvcResult = mockMvc.perform(MockMvcRequestBuilders.post("/Controller/controller") //访问路径 .contentType(MediaType.APPLICATION_JSON_UTF8) //设置contentType .accept(MediaType.APPLICATION_JSON_UTF8_VALUE)).andExpect(MockMvcResultMatchers.status().isOk()) //断言返回状态码 .andExpect(MockMvcResultMatchers.jsonPath("$.code") .value(true)) //断言响应体中body的内容 ->{"code",true} .andDo(print() //输出MvcResult到控制台 ).andReturn(); log.debug( mvcResult.getResponse().getContentAsString());
单个或多个参数(.param())
MvcResult mvcResult = mockMvc.perform(MockMvcRequestBuilders.post("/Controller/controller") .contentType(MediaType.APPLICATION_JSON_UTF8) //设置contentType .param("controller", "controller") //参数赋值 .accept(MediaType.APPLICATION_JSON_UTF8_VALUE)).andExpect(MockMvcResultMatchers.status().isOk()) //断言返回状态码 .andExpect(MockMvcResultMatchers.jsonPath("$.code") .value(true)) //断言响应体中body的内容 ->{"code",true} .andDo(print() //输出MvcResult到控制台 ).andReturn(); log.debug( mvcResult.getResponse().getContentAsString());
参数为对象(传入参数,.content封装请求体) 数组类似此写法
UserVO vo = TestObjExp.get(UserVO.class); assert vo != null; vo.setUnitname("111");//参数赋值 MvcResult mvcResult = mockMvc.perform(MockMvcRequestBuilders.post("/Controller/controller") .contentType(MediaType.APPLICATION_JSON_UTF8) //设置contentType .content(JSON.toJSONString(vo)) //封装请求体 .accept(MediaType.APPLICATION_JSON_UTF8_VALUE)).andExpect(MockMvcResultMatchers.status().isOk()) //断言返回状态码 .andExpect(MockMvcResultMatchers.jsonPath("$.code") .value(true)) //断言响应体中body的内容 ->{"code",true} .andDo(print() //输出MvcResult到控制台 ).andReturn(); log.debug( mvcResult.getResponse().getContentAsString());
List集合(先为对象需要属性赋值,然后封装list对象 ) Map类似此写法
UserVO vo = TestObjExp.get(UserVO.class); assert vo != null; vo.setUnitname("111");//参数赋值 ArrayList<UserVO> list = new ArrayList<>(); list.add(vo);//封装对象 MvcResult mvcResult = mockMvc.perform(MockMvcRequestBuilders.post("/Controller/controller") .contentType(MediaType.APPLICATION_JSON_UTF8) //设置contentType .content(JSON.toJSONString(vo)) //封装请求体 .accept(MediaType.APPLICATION_JSON_UTF8_VALUE)).andExpect(MockMvcResultMatchers.status().isOk()) //断言返回状态码 .andExpect(MockMvcResultMatchers.jsonPath("$.code") .value(true)) //断言响应体中body的内容 ->{"code",true} .andDo(print() //输出MvcResult到控制台 ).andReturn(); log.debug( mvcResult.getResponse().getContentAsString());
文件形式
MockMultipartFile file = new MockMultipartFile("file", "test/Controller.xls" , "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" //类型 , new FileInputStream(new File("src/main/resources/test/Controller.xls")));//输出位置 MvcResult mvcResult = mockMvc.perform(MockMvcRequestBuilders.fileUpload("/Controller/controller") .file(file) .contentType(MediaType.APPLICATION_JSON_UTF8) //设置contentType .accept(MediaType.APPLICATION_JSON_UTF8_VALUE) ).andExpect(MockMvcResultMatchers.status().isOk()) //断言返回状态码 .andExpect(MockMvcResultMatchers.jsonPath("$.code") .value(true)) .andDo(print()) .andReturn();//输出MvcResult到控制台 log.debug(mvcResult.getResponse().getContentAsString());
上一篇:
5款热门的远程控制软件,让你事半功倍
下一篇:
docker环境下分布式运行jmeter