1.Mock测试
对于某些不容易构造或者不容易获取的对象,用一个虚拟的对象来创建以便测试的测试方法,就是 mock 测试。
2.流程
-
加注解 @WebAppConfiguration//使用这个注解,可以自动获取注入的ioc容器
-
使用MockMvcBuilders创建MockMvcBuilder 对象,使用方法:webAppContextSetup(WebApplicationContext wac):指定 WebApplicationContext,将会从该上下文获取相应的控制器并得到相应的 MockMvc,本章节下面测试用例均使用这种方式创建 MockMvcBuilder 对象。
@Before public void initMockMvc() { mockMvc = MockMvcBuilders.webAppContextSetup(context).build(); }
-
mockMvc的perform方法:执行一个 RequestBuilder 请求,会自动执行 SpringMVC 的流程并映射到相应的控制器执行处理,该方法的返回值是一个 ResultActions。再使用ResultActions的andReturn方法返回相应的MvcResult,然后自定义验证,进行下一步的处理。
//模拟请求,拿到返回值
MvcResult result = mockMvc.perform(MockMvcRequestBuilders.
get("/emps").param(
"pn", "5")).andReturn();
//请求成功之后,请求域中会有pageInfo
MockHttpServletRequest request = result.getRequest();
PageInfo pageInfo = (PageInfo) request.getAttribute("pageInfo");