使用空手道框架,如何确保在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
}
]
}
}
}
]
}
这里,使用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(_)'