Karate API框架-如何检查特定字段的值是否不是数组下的重复项

问题描述 投票:1回答:1

使用空手道框架,如何确保在person数组下的personId下不应该出现重复值

如果您在下面的响应中看到id:1记录具有重复的personId,则在这种情况下我的测试应失败。人员数组本质上也是动态的,可能会有一些记录也包含4个以上的人员ID。

因此,一种通用方法应该会有所帮助。请帮忙。

    {
        "total": 10,
        "count": 10,
        "results": [
            {
                "id": "1",
                "source": {
                    "authors": {
                        "persons": [
                            {
                                "personId": 11
                            },
                            {
                                "personId": 11
                            }
                        ]
                    }
              }
          },
          {
                "id": "2",
                "source": {
                    "authors": {
                        "persons": [
                            {
                                "personId": 11
                            },
                            {
                                "personId": 15
                            }
                        ]
                    }
              }
          }
    ]
}
json karate jsonpath
1个回答
0
投票

这里,使用JS函数和Java Set的一种可能的解决方案:

* def isValid =
"""
function(x) {
  var personIds = karate.jsonPath(x, '$[*].personId');
  var distinct = new java.util.HashSet(personIds);
  return personIds.size() == distinct.size();
}
"""
* match each $..persons == '#? isValid(_)'
© www.soinside.com 2019 - 2024. All rights reserved.