首页 > 其他分享 >使用MockMvcResultMatchers对返回值为List的接口进行断言

使用MockMvcResultMatchers对返回值为List的接口进行断言

时间:2022-08-15 14:44:42浏览次数:89  
标签:MockMvcResultMatchers List andExpect 返回值 101 id 断言

在使用MockMvc进行单元测试的时候,我们经常使用andExpect(MockMvcResultMatchers.jsonPath(jsonKeyName).isNotEmpty())
Controller返回的结果进行断言,用以验证返回结果的正确性。

但假如,后端返回的是无Key的Json时,如返回值为List<T>,此时返回的Json字符串格式为

[{
    "id":"100",
    "name":"Jack",
    "age":"18"
},
{
    "id":"101",
    "name":"Tom",
    "age":"21"
}]

jsonKeyName的选择让我犯了难,于是乎搜索一番,得到了答案,遂小记一番,避免遗忘:
此时我们可以使用如下表达式进行断言,假如我需要断言列表的第二个对象的id是否为101
andExpect(MockMvcResultMatchers.jsonPath($[1]).Value("101"))

完整的测试方法如下:

@Test
    public void testGetAll() throws Exception {
        mockMvc.perform(MockMvcRequestBuilders.get("/person") //此处为Controller的请求路径
                .param("type", "student")  //添加一个值为student的请求参数type
                .andExpect(MockMvcResultMatchers.status().isOk()) //判断状态码是否为200
                .andDo(MockMvcResultHandlers.print()) //打印返回结果,便于信息校对
                .andExpect(MockMvcResultMatchers.jsonPath($[1]).Value("101")) //断言返回值的第二个对象的`id`是否为`101`
                .andReturn(); // 返回相应的MvcResult
    }

标签:MockMvcResultMatchers,List,andExpect,返回值,101,id,断言
From: https://www.cnblogs.com/hooyeefam/p/16588249.html

相关文章

  • mybatis 11: 通过map获取入参和返回值
    1.通过指定参数位置获取作用如果入参是多个且实体类无法封装所有的入参,可以通过指定参数位置进行传参,方便对多个参数进行获取用法接口//指定参数位置List......
  • Failed to list *v1.CronJob: the server could not find the requested resource
    基础环境kubectlversionClientVersion:version.Info{Major:"1",Minor:"20",GitVersion:"v1.20.7",GitCommit:"132a687512d7fb058d0f5890f07d4121b3f0a2e2",GitTre......
  • vb.net listview 开启双缓存
      vb.netlistview刷新时闪烁 因为Doublebuffered属性为protected无法直接修改.网友提供方法,使用反射修改DoubleBuffered属性 LV1.[GetType]().GetProp......
  • 【java面试题】ArrayList和LinkedList的区别
    【java面试题】ArrayList和LinkedList的区别 ArrayList和LinkedList都实现了List接口,它们有一下的不同点:ArrayList是基于索引的数据接口,它的底层是数组,它可以以O(1)时......
  • 【Java】List排序方法(包括对象、Map等内部排序实现)
    前言日常开发中经常会对List集合做排序操作,JDK为我们提供了强大的排序方法,可以针对对象、Map、基本类型等进行正/倒排序操作。参考博客:JAVA列表排序方法sort和reversed......
  • spring ApplicationListener 和 CommandLineRunner
    ApplicationContext事件机制是观察者设计模式的实现如果容器中有一个ApplicationListenerBean,每当ApplicationContext发布ApplicationEvent时,ApplicationListenerB......
  • 集合框架2----List实现类(ArrayList、vector、LinkedList)
    List实现类   ArrayList:###源码分析:DEFAULT_CAPACITY=10;默认容量(注意:如果没有向集合中添加任何元素,容量为0,添加一个元素之后,容量为10),每次扩容大小是原来......
  • list和tuple的区别:
    list和tuple的区别:list:1、是一种有序的集合,可以随时添加和删除其中元素;2、访问list中的元素,索引从0开始,0为第一个元素,当索引超出范围会报错,索引不能越界,最后一......
  • 关于列表迭代器listIterator.previous();无法输出的问题
    转载:(18条消息)关于listIterator.hasPrevious()为什么跳过执行的解释_干碎那个人的眼镜(指自己)的博客-CSDN博客_hasprevious() ListIteratorlistIterator=list.listI......
  • Java中list集合自定义排序-2022新项目
    一、业务场景为了加快首页数据查询的效率,因此将首页查询的数据大多数都放在了缓存中,包括各种list集合数据。对这些从缓存中获取的数据做了一个兜底处理,如果从缓存中......