SpringBoot MVC测试框架MockMvc

SpringMVC测试框架

基于RESTful风格的SpringMVC的测试,我们可以测试完整的Spring MVC流程,即从URL请求到控制器处理,再到视图渲染都可以测试。

接下来我们把集成web 环境测试 举例说明一下:

1、MockMvcBuilders.webAppContextSetup(WebApplicationContext context):指定WebApplicationContext,将会从该上下文获取相应的控制器并得到相应的MockMvc;

/**
 * @author: fxbin
 * @datetime: 2018/6/20 9:31
 * @description:
 */
@RunWith(SpringRunner.class)
@SpringBootTest(classes = Application.class)
public class DemoTest {
    /**
     *  注入一个web应用环境(容器)
     */
    @Resource
    private WebApplicationContext webApplicationContext;
    //mvc 环境对象
    private MockMvc mockMvc;
    @Before
    public void init(){
        mockMvc = MockMvcBuilders.webAppContextSetup(webApplicationContext).build();
    }
}

举个测试栗子:

@Test
public void findObject() throws Exception {
      String str = mockMvc.perform(MockMvcRequestBuilders.get("/1/2")
             .contentType(MediaType.APPLICATION_JSON_UTF8)).andExpect(MockMvcResultMatchers.status().isOk())
             .andExpect(MockMvcResultMatchers.jsonPath("$.length()").value(2))
             .andReturn().getResponse().getContentAsString();

     System.out.println(str);

 }

测试的接口是:

/**
  * 功能描述: 测试restful 协议, 从路径中获取字段
  * @param city_id
  * @param user_id
  * @return
  */
 @GetMapping("/{city_id}/{user_id}")
 public Object findObject(@PathVariable("city_id") String city_id, @PathVariable("user_id") String user_id){
     params.clear();
     params.put("city_id", city_id);
     params.put("user_id", user_id);
     return params;
 }

测试结果:


2、部分方法说明
perform:执行一个RequestBuilder请求,会自动执行SpringMVC的流程并映射到相应的控制器执行处理;
andExpect:添加ResultMatcher验证规则,验证控制器执行完成后结果是否正确;
andDo:添加ResultHandler结果处理器,比如调试时打印结果到控制台;
andReturn:最后返回相应的MvcResult;然后进行自定义验证/进行下一步的异步处理;

3、MockMvc 测试整个流程程说明:
1、mockMvc.perform执行一个请求;
2、MockMvcRequestBuilders.get("/1/2")构造一个请求
3、ResultActions.andExpect添加执行完成后的断言
4、ResultActions.andDo添加一个结果处理器,表示要对结果做点什么事情,比如此处使用MockMvcResultHandlers.print()输出整个响应结果信息。
5、ResultActions.andReturn表示执行完成后返回相应的结果。

测试过程如下:
1、准备测试环境
2、通过MockMvc执行请求
3.1、添加验证断言
3.2、添加结果处理器
3.3、得到MvcResult进行自定义断言/进行下一步的异步请求
4、卸载测试环境

[代码地址] https://gitee.com/fxbin/SpringBoot2Example
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值