MockMvc常用指令小结

MockMvc

主要用来进行Web Controller的单元测试。

常用方法

MockMvc

  • perform(RequestBuilder requestBuilder): ResultAction
    执行一个HTTP请求, 入口参数为RequestBuilder,输出结果为ResultAction

MockMvcRequestBuilders

构建各类HTTP Request请求的工厂方法

  • get(urltemplate, vars)
  • post(urltemplate, vars)
  • delete(urltemplate, vars)
  • put(urltemplate, vars)

MockHttpServletRequestBuilder

构建Request的缺省builder

  • cookie(Cookie… cookie): 设置信息
  • content(String str): 请求内容
  • contentType(): 设置contentType类型
  • param(String name, String … value): 设置参数
  • session()
  • requestAttr()
  • flashAttr()
  • locale()
  • accept(): 接手内容类型MediaType

ResultMatcher

功能描述: 用来执行

  • match(MvcResult result): void
    针对执行结果进行断言判断
  • matchAll(ResultMatcher… matchers) : ResultMatcher
    执行断言,批量执行

ResultHandler

结果信息Handler

  • void handle(MvcResult result) : 处理结果信息

ResultActions

  • andExpect(ResultMatcher var1) : ResultActions
    对返回的Result结果进行断言, 返回为ResultActions,运行流式风格调用
  • andDo(ResultHandler handler): ResultActions
    添加一个结果处理器,表示要对结果做点什么事情,比如此处使用MockMvcResultHandlers.print()输出整个响应结果信息。返回对象为ResultActions
  • andReturn() : MvcResult
    表示执行完成后返回相应的结果,其结果为MvcResult

MvcResult

访问Http请求的结果信息

  • getRequest()
  • getResponse()
  • getHandler()
  • getModelAndView()

MockMvcResultMatchers

提取请求结果信息的各类断言

  • status(): StatusResultMatchers 结果信息
  • content(): 内容
  • header(): 头信息
  • model(): 模型信息
  • flash(): Flash attribute
  • forwardedUrl():
  • redirectedUrl()
  • cookie()
  • jsonPath(String expression, Matcher matcher)
  • jsonPath(String expression, Object… args)
  • xpath(String expression, Object… args)
  • xpath(String expression, Matcher matcher)

其中Matcher类为org.hamcrest包中的类。

StatusResultMatchers

检查结果中的各类信息

  • isBadRequest(): 不合法的请求
  • isOk(): 200

使用分析

代码示例:

 mockMvc.perform(get("/games").contentType(MediaType.TEXT_PLAIN_VALUE))
                .andExpect(status().isOk())
                .andExpect(content().contentTypeCompatibleWith(MediaType.APPLICATION_JSON))
                .andExpect(jsonPath("$.status", Matchers.is("success")))
                .andExpect(jsonPath("$.games[0].name", Matchers.equalToIgnoringCase("zhangsan")));

mockMvc为MockMvc的对象实例,执行其perform()方法,获取ResultAction结果信息。
get(): 其实是MockMvcRequestBuilders.get()方法的简写,其构建出MockHttpServletRequestBuilder, contentType()为其方法,用以设置mediaType类型。
andExepct()为ResultAction的方法,其中status()为MockMvcResultMatchers方法,返回StatusResultMatchers。
content()为MockMvcResultMatchers方法,返回ContentResultMatchers实例。
jsonPath()为MockMvcResultMatchers方法,返回JsonPathResultMatchers实例,其中参数为

总结

由于篇幅所限,就不再一一列举其中定义的所有方法,仅仅罗列其中的关键方法若干,做以展示,其余的方法大家可以根据实际需求在项目中使用。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值