邮递员:如果存在键:值,如何检查 Json 响应数组

AKA*_*ADO 8 postman

如果 key:value 存在,我想检查我的 JSON 响应数组。并且我想如果键:值被发现从循环出去,并得到测试结果。 你能支持我怎么做吗?

例如,我有以下回应:

[
    {
        "persID": "personID_1",
        "vip": false,
        "account": {
            "contactName": "value1",
        },
        "premium": {
            "Name": "value2",
            "Director": "value3",
            "company": "value7",
            "homePage": "value6",
            "address": {
                "country": "value8",
                "city": "value9"
            },
            "photo": value10
        }
    },
    {
        "persID": "personID_2",
        "vip": false,
        "account": {
            "contactName": "value11",
        },
        "premium": {
            "Name": "value12",
            "Director": "value13",
            "company": "value17",
            "homePage": "value16",
            "address": {
                "country": "value18",
                "city": "value19"
            },
            "photo": value110
        }
    },
    .....
    .....// dynamic response can be "n" elements!!!!
    ]
Run Code Online (Sandbox Code Playgroud)

我想检查这个数组中是否存在一个带有 ( "persID": "personID_3" ) 的键值。(例如对于 persID_3,如果结果失败,并且 persID_2 已通过

我尝试了以下但没有结果:

var jsonArray = pm.response.json();
var persID = "persID_3";
pm.test("2. tets check if persdID exist in array", function () {
 var i=0;
 for(i; i<jsonArray.length;i++){

                pm.expect(jsonArray).to.have.property(jsonArray[i].persID, persID);
                // pm.expect(jsonArray[i]).to.have.property(jsonArray[i].persID, persID);

 }
});
Run Code Online (Sandbox Code Playgroud)

也试过 var jsonArray = JSON.parse(responseBody); 和 pm.expect(jsonArray[i]).to.have.property(jsonArray[i].persID, persID);

但没有结果

感谢您的任何支持。

Dan*_*ton 5

您可以使用Lodash遍历数组并检查响应中的值:

pm.test('Matches personID property value', () => {
    _.each(pm.response.json(), (arrItem) => {
        if (arrItem.persID === 'personID_2') {
            throw new Error(`Array contains ${arrItem.persID}`)
        }
    })
});
Run Code Online (Sandbox Code Playgroud)

如果该personID_2属性存在,则测试应该失败,但该值可以是您喜欢的任何值。我使用了你的响应数据并创建了一个快速的 API 路由来向你展示这个工作。

邮差

我将值添加到错误消息中,以便它对测试输出更具描述性。