当前位置: 首页 > 知识库问答 >
问题:

Hamcrest matcher,用于检查响应 json 数组中的任何元素是否具有与 Rest Assured 中的特定值相同的属性值

崔恺
2023-03-14

我放心地从事REST API测试自动化的工作。对于一个API,我得到一个如下的数组作为响应。从数据数组中,我需要检查任何数组项是否具有值为“Sss/12345637/58”属性“requestRefNo”

 {
    "data": [
        {
            "requestRefNo": "Sss/12345637/88",
            "requestRefType": "AST",
            "requestedByCode": "OWR",
            "requestedByDesc": "Asset Owner",
            "requestedDate": "12/06/2016",
            "requestTypeRefNo": "Sss/12345637/SWT/73"
        },
        {
            "requestRefNo": "Sss/12345637/58",
            "requestRefType": "AST",
            "requestedByCode": "OWR",
            "requestedByDesc": "Asset Owner",
            "requestedDate": "10/06/2016",
            "requestTypeRefNo": "Sss/12345637/SWT/43"
        },
        ....
    ],
    "links": {
        "linkDetails": [

        ],
        "empty": true
    },
    "errors": {
        "empty": true,
        "errorDetails": [

        ]
    }
}

我试过这样:

.assertThat().statusCode(200).body("data.requestRefNo", IsArrayContaining.hasItemInArray("Sss/12345637/58"))))

但它给出了以下错误:

java.lang.AssertionError: 1 expectation failed.
JSON path data.requestRefNo doesn't match.
Expected: an array containing "Sss/12345637/58"
  Actual: [Sss/12345637/58, Sss/12345637/88]

有人能给我出个主意吗?

谢谢,苏罗迪普

共有1个答案

袁华清
2023-03-14

得到了一个很简单的答案,之前漏掉了:

...
.body("data.requestRefNo", Matchers.hasItem("Sss/12345637/58"))
                                        .extract().response();

“data.requestRefNo”将返回响应数组中所有requestRefNo的数组,如[Sss/12345637/58、Sss/123 45637/88]和匹配器。hasItem将检查其中是否存在值“Sss/12345637/58”。

谢谢。

 类似资料:
  • 问题内容: Swift中是否有一个函数可以检查数组的所有元素是否具有相同的值?就我而言,它是一个type数组。我知道我可以使用一个简单的for循环对其进行迭代,我只是想知道是否内置了某些东西并且速度更快。 问题答案: 任何方法都必须遍历所有元素,直到找到另一个元素: 可以使用以下函数来代替显式循环: 如果数组元素是(例如),则可以从数组元素创建一个(从Swift 1.2开始可用),并检查它是否恰好

  • 我想用Java做一个小游戏swing,但我想不出一个解决问题的好方法。我有两个阵列,第一个是板条箱 第二个是Tile对象。 我想检查一下是否所有的板条箱都放在瓷砖上。我的意思是,不管哪个盒子在哪个瓷砖上,都有几个盒子,几个瓷砖,每个盒子都应该放在一块瓷砖上,不管哪个盒子在哪个瓷砖上。在游戏中,玩家行走并移动箱子,所以他们的坐标会发生变化。瓷砖坐标不变(如果可能有帮助的话)。这将是我的停止状态。当板

  • 我有这个ArrayList- ,一个整数被添加到移动[1]。然后将该数组添加到ArrayList中,然后重复该过程,这样我就有了一个“移动”列表。 我的问题是,我不确定如何在ArrayList(“树”)中找到仅在元素中包含特定值的数组(“移动”)——因为元素每次都是唯一的。 然后,我想制作一个所有匹配项的数组/列表。例如,一个数组,它包含与3的值相匹配的所有移动值。因此,我会留下一个数组/2D数组

  • 问题内容: 在Java中,给定一个值数组(例如整数),是否有一种方法可以有效地检查它们是否都具有特定值? 例如,使用整数数组,例如: 并且只有在所有条件均为2的情况下,您才需要执行一项操作?有没有比这更有效的方法: 我知道可以用C ++做到这一点,但是Java呢? 问题答案: 或者,如果使用Java 8,则可以执行以下操作: 基本上,使用Streams可以非常简洁地完成与集合/数组有关的所有操作。

  • 如何检查两个数组(循环)是否具有相同顺序的相同元素。例如,让我们以数组[1,2,3,4]为例。 对于[2,3,4,1]、[3,4,1,2]、[4,1,2,3],测试应返回true,但对于[1,3,2,4]、[1,4,2,3]或[1,2,3,5]则不返回true。 我最初的方法是找到第一个匹配项——每个数组中一个相等的元素——并将这两个元素视为各自数组的初始元素,我逐个比较了数组的其余元素。 有没有

  • 问题内容: 我是Java 8的新手。我有一个类型为A的自定义对象的列表,其中A如下所示: 我想确定该列表中的所有对象是否都具有相同的名称。我可以通过遍历列表并捕获名称的先前值和当前值来实现。在这种情况下,我发现了如何计算列表中为其属性之一具有相同值的自定义对象的数量。但是,在java 8中,有没有更好的方法使用流? 问题答案: 一种方法是获取第一个列表的名称,然后调用并进行检查。