mockMvc

1.为什么使用mockMvc。
    对模块进行集成测试时,希望能够通过输入url对controller进行测试。如果通过启动服务器,建立http client进行测试,这样会使得测试变得很麻烦
(1.启动速度慢,2.测试验证不方便,3.依赖网络环境)
2.测试逻辑
   1、 MockMvcBuilder构造MockMvc的构造器
    2、mockMvc.perform执行一个请求。
    3、MockMvcRequestBuilders.get("XXX")构造一个请求。
    4、ResultActions.param添加请求传值
    5、ResultActions.accept(MediaType.TEXT_HTML_VALUE))设置返回类型
    6、ResultActions.andExpect添加执行完成后的断言。
    7、ResultActions.andDo添加一个结果处理器,表示要对结果做点什么事情
     * 比如此处使用MockMvcResultHandlers.print()输出整个响应结果信息。
    8、ResultActions.andReturn表示执行完成后返回相应的结果。
3.mockMvcBuilder:
    MockMvc是spring测试下的一个非常好用的类,他们的初始化需要在setUp中进行。
    MockMvcBuilder是用来构造MockMvc的构造器,其主要有两个实现:StandaloneMockMvcBuilder和DefaultMockMvcBuilder,前者继承了后者。
    ① MockMvcBuilders.webAppContextSetup(WebApplicationContext context):指定WebApplicationContext,将会从该上下文获取相应的控制器并得到相应的MockMvc;
    ② MockMvcBuilders.standaloneSetup(Object... controllers):通过参数指定一组控制器,这样就不需要从上下文获取了,比如this.mockMvc = MockMvcBuilders.standaloneSetup(this.controller).build();
4. MockMvcRequestBuilders
    从名字可以看出,RequestBuilder用来构建请求的
    主要API:
    MockHttpServletRequestBuilder get(String urlTemplate, Object... urlVariables):根据uri模板和uri变量值得到一个GET请求方式的RequestBuilder,如果在controller的方法中method选择的是           RequestMethod.GET,那在controllerTest中对应就要使用MockMvcRequestBuilders.get。
    post(String urlTemplate, Object... urlVariables):同get类似,但是是POST方法;
    put(String urlTemplate, Object... urlVariables):同get类似,但是是PUT方法;
    delete(String urlTemplate, Object... urlVariables) :同get类似,但是是DELETE方法;
    options(String urlTemplate, Object... urlVariables):同get类似,但是是OPTIONS方法;
5. ResultActions
     调用MockMvc.perform(RequestBuilder requestBuilder)后将得到ResultActions,对ResultActions有以下三种处理:
    ResultActions.andExpect:添加执行完成后的断言。添加ResultMatcher验证规则,验证控制器执行完成后结果是否正确;
    ResultActions.andDo:添加一个结果处理器,比如此处使用.andDo(MockMvcResultHandlers.print())输出整个响应结果信息,可以在调试的时候使用。
    ResultActions.andReturn:表示执行完成后返回相应的结果
相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页