二、测试逻辑
MockMvcBuilder构造MockMvc的构造器;
mockMvc调用perform,执行一个RequestBuilder请求,调用controller的业务处理逻辑;
perform返回ResultActions,返回操作结果,通过ResultActions,提供了统一的验证方式;
使用StatusResultMatchers对请求结果进行验证;
使用ContentResultMatchers对请求返回的内容进行验证;
ResultActions.andExpect:添加执行完成后的断言。添加ResultMatcher验证规则,验证控制器执行完成后结果是否正确;
ResultActions.andDo:添加一个结果处理器,比如此处使用.andDo(MockMvcResultHandlers.print())输出整个响应结果信息,可以在调试的时候使用。
ResultActions.andReturn:表示执行完成后返回相应的结果
例子:
String example= "{"id":1, "name":"kqzu"}"; mockMvc.perform(post("/user") // 路径 .contentType(MediaType.APPLICATION_JSON) //用contentType表示具体请求中的媒体类型信息,MediaType.APPLICATION_JSON表示互联网媒体类型的json数据格式(见备注) .content(example) .accept(MediaType.APPLICATION_JSON)) //accept指定客户端能够接收的内容类型 .andExpect(content().contentType("application/json;charset=UTF-8")) //验证响应contentType == application/json;charset=UTF-8 .andExpect(jsonPath("$.id").value(1)) //验证id是否为1,jsonPath的使用 .andExpect(jsonPath("$.name).value("kqzhu"); // 验证name是否等于Zhukeqian String errorExample = "{"id":1, "name":"kqzhu"}"; MvcResult result = mockMvc.perform(post("/user") .contentType(MediaType.APPLICATION_JSON) .content(errorExample) .accept(MediaType.APPLICATION_JSON)) //执行请求 .andExpect(status().isBadRequest()) //400错误请求, status().isOk() 正确 status().isNotFound() 验证控制器不存在 .andReturn(); //返回MvcResult
附录:Requests & Responses 的标识及解释
资料:史上最全,Spring MVC测试框架详解——服务端测试
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/208510.html原文链接:https://javaforall.net
