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:表示执行完成后返回相应的结果
今天的文章mockMvc分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/6415.html