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:表示执行完成后返回相应的结果
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值