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
