使用Postman测试在响应中的对象数组中查找特定项

kg7wmglp  于 2024-01-07  发布在  Postman
关注(0)|答案(2)|浏览(151)

我有一个带有以下主体的响应,一个数组。我想检查我们有一个项目,并且只有一个值为IsPrimary true和值为'Chuck Norris'的salePerson。

[
{
    "districtName": "Austria",
    "storeName": "Store6",
    "salePerson": "sdfgh",
    "isPrimary": false
},
{
    "districtName": "Austria",
    "storeName": "Store6",
    "salePerson": "dfsd",
    "isPrimary": false
},
{
    "districtName": "Austria",
    "storeName": "Store6",
    "salePerson": "Chuck Norris",
    "isPrimary": true
},
{
    "districtName": "Austria",
    "storeName": "Store6",
    "salePerson": "sdfgh",
    "isPrimary": false
}

字符串
我试着过滤它给了我错误:

data =pm.response.body;
let object_to_find = { saleperson: 'Chuck Norris' };
let result2 = data.filter(function (value) {
    return value.id == object_to_find.id && value.name == object_to_find.name;
});
console.log(result2);


错误代码:

Couldn't evaluate the test script:
TypeError: Cannot read properties of undefined (reading 'filter')

y4ekin9u

y4ekin9u1#

要根据特定条件过滤数组(在您的示例中,查找salePerson为 *'Chuck Norris 'isPrimarytrue**的项目),您可以使用filter函数,如下所示:

let data = pm.response.json();

let result = data. Filter(function(item) {
    return item.salePerson === 'Chuck Norris' && item.isPrimary === true;
});

console.log(result);

字符串
在应用过滤器函数之前,还要确保使用pm.response.json()将响应主体(pm.response.body)正确解析为JavaScript对象,并确认用于比较的属性名称(sale Person,isPrimary)与响应对象中的名称完全匹配。

fdbelqdn

fdbelqdn2#

@哆啦A梦在这个特殊的情况下需要两个改进。

    • 响应JSON格式不正确,因为缺少数组结束符(方括号)。*
  • 我试着建立一个模拟服务器,并试图运行测试(这就是我发现数组关闭问题的地方),测试可以改进为

`

pm.test("response to have object with specific values", function(){
    let object_to_find = { saleperson: 'Chuck Norris' };
    let result2 = pm.response.json().filter(function (value) {
        return value.id == object_to_find.id && value.name == object_to_find.name;
    });
    pm.expect(Array.isArray(result2)).to.eql(true);
    pm.expect(result2.length).to.greaterThan(0);
})

字符串
`

pm.test("response is array", function(){
    var data = pm.response.json();
    pm.expect(Array.isArray(data)).toeql(true);
})


附加在本地x1c 0d1x的屏幕截图下方

相关问题