邮递员:测试引发断言错误`预期为null到深度相等的undefined`

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

我的API响应如下:

[
    {
        "id": 1,
        "instance_id": 1400,
        "entity_uuid": 21,
        "field": null,
        "old_value": null,
        "new_value": null,
        "kind": "C",
        "updated_by": "binish",
        "updated_dt": "2017-12-28T13:19:22.000Z"
    }
]

我想验证邮递员中old_value字段的值,下面是代码:

var data = pm.response.json(responseBody);
var oldValue = data.old_value;
var nullValue = null;

pm.test("Old Value is NULL", function(){
    pm.expect(nullValue).to.be.eql(oldValue);
});

测试抛出错误:

“ AssertionError:期望null等于未定义的深度。”

我在这里做错了什么?

javascript postman chai
2个回答
0
投票

您可以使用类似的方法来检查old_value属性是否为null吗?这是使用内置模块Lodash来进行的,而本机JS for循环所采用的方式更干净。

pm.test("Old Value is NULL", () => {
    _.each(pm.response.json(), (arrItem) => {
        console.log(arrItem)
        pm.expect(arrItem.old_value).to.be.null
    })
})

Postman

使用附加到问题的数据,我对此进行了扩展,以将另一个对象添加到数组中。这是向您显示该测试将检查each对象old_value属性是否具有相同的null值,而不是将您限制为仅查看第一个[0]对象。

Postman


1
投票

此行有误:var data = pm.response.json(responseBody);您不需要该参数,因为,正如您在documentation中看到的那样,此处的参数是可选的,而第一个参数是function(),我认为,它将起作用:删除此参数后:

var data = pm.response.json();
var oldValue = data[0].old_value; //data is array
var nullValue = null;

pm.test("Old Value is NULL", function(){
    pm.expect(nullValue).to.be.eql(oldValue);
});
© www.soinside.com 2019 - 2024. All rights reserved.