springmvc mockmvc单元测试

springmvc mockmvc单元测试

简介
MockMvc实现了对Http请求的模拟,能够直接使用网络的形式,转换到Controller的调用,这样可以使得测试速度快、不依赖网络环境,而且提供了一套验证的工具,这样可以使得请求的验证统一而且很方便。

使用步骤
  1. MockMvcBuilder构造MockMvc的构造器
  2. mockMvc调用perform,执行一个RequestBuilder请求,调用controller的业务处理逻辑
  3. perform返回ResultActions,返回操作结果,通过ResultActions,提供了统一的验证方式
  4. . 使用StatusResultMatchers对请求结果进行验证
  5. 使用ContentResultMatchers对请求返回的内容进行验证
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(); 这些Builder还提供了其他api

MockMvcRequestBuilders

RequestBuilder用来构建请求的,其提供了一个方法buildRequest(ServletContext servletContext)用于构建
MockHttpServletRequest;其主要有两个子类MockHttpServletRequestBuilder和MockMultipartHttpServletRequestBuilder(如文件上传使用),即用来Mock客户端请求需要的所有数据。 主要API:

MockHttpServletRequestBuilder.get(String urlTemplate, Object… urlVariables): GET方法;

post(String urlTemplate, Object… urlVariables): POST方法;

put(String urlTemplate, Object… urlVariables): PUT方法;

delete(String urlTemplate, Object… urlVariables) : DELETE方法;

options(String urlTemplate, Object… urlVariables): OPTIONS方法;

ResultActions
调用MockMvc.perform(RequestBuilder requestBuilder)后将得到ResultActions,对ResultActions有以下三种处理:

ResultActions.andExpect:添加执行完成后的断言。添加ResultMatcher验证规则,验证控制器执行完成后结果是否正确;

ResultActions.andDo:添加一个结果处理器,比如此处使用.andDo(MockMvcResultHandlers.print())输出整个响应结果信息,可以在调试的时候使用。

ResultActions.andReturn:表示执行完成后返回相应的结果

ResultMatchers
ResultMatcher用来匹配执行完请求后的结果验证,其就一个**match(result)**断言方法,如果匹配失败将抛出相应的异常,spring mvc测试框架提供了很多ResultMatchers来满足测试需求。

MvcResult
即执行完控制器后得到的整个结果,并不仅仅是返回值,其包含了测试时需要的所有信息。 MockHttpServletRequest getRequest():得到执行的请求;

MockHttpServletResponse getResponse():得到执行后的响应;

Object getHandler():得到执行的处理器,一般就是控制器;

HandlerInterceptor[] getInterceptors():得到对处理器进行拦截的拦截器;

ModelAndView getModelAndView():得到执行后的ModelAndView;

Exception getResolvedException():得到HandlerExceptionResolver解析后的异常;

FlashMap getFlashMap():得到FlashMap;

Object getAsyncResult()/Object getAsyncResult(long timeout):得到异步执行的结果;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值