javascript - 如何测试 Postman 中是否缺少(可能)嵌套的 JSON 属性?

标签 javascript testing postman bdd chai

我想测试嵌套属性“x”是否存在

如果响应如下所示,则测试必须失败

答:

{
    "first": 1,
    "second": {
        "one": 1,
        "two": 2,
        "three": {
            "x": 1,
            "y": 2
        }
    }
}

但对于下面的例子,它必须通过:

乙:

{
    "first": 1,
    "second": {
        "one": 1,
        "two": 2,
        "three": {
            "y": 2
        }
    }
}

C:

{
    "first": 1,
    "second": {
        "one": 1,
        "two": 2
    }
}

D:

{
    "first": 1
}

当然。我可以使用 pm.expect(object).to.not.have.property("x") 来测试是否存在。但这并非对所有情况都有帮助。

例如,我的 PostMan 测试代码:

pm.test("(nested)property 'x' not available", function () {
    var jsonData = pm.response.json();
    pm.expect(jsonData.second.three).to.not.have.property("x")
});

对于情况 A 和 B 非常有用,但对于 C 和 D 则不行,因为属性的父“second”或“three”可以是未定义的。但我不想测试是否缺少它们,因为它不是这个特定测试的目标。

是否有任何 BDD Chai 函数提供此功能,或者我是否被迫为这种情况实现递归辅助函数?

最佳答案

您可以使用内置的 Lodash 函数来进一步分解数据,而不是尝试在 pm.expect() 语句中完成所有操作。

_.get() 函数可能是探索它的有用函数 - https://lodash.com/docs/4.17.11#get

关于javascript - 如何测试 Postman 中是否缺少(可能)嵌套的 JSON 属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56181889/

相关文章:

ruby-on-rails - 规范文件加载顺序问题 : in `find_and_eval_shared' : Could not find shared examples

soapui - 在 POSTMAN 中指定查询和模板参数

rest - 将我的 Postman 调用转换为 Dart/Flutter API 调用

javascript - 无法访问 React 对象状态的对象属性,即使它存在。返回未定义

javascript - 为什么我的浏览器在 ajax 后调用中发送两个请求?

javascript - 我的代码向动态元素添加点击监听器有什么问题?

javascript - 使用 html() 获取更改的内容

ruby-on-rails - 如何使用 Shoulda 正确测试此 Controller 操作?

testing - 如何测试表格及其在 Protractor 中的内容?

asp.net-core - PayPal交易搜索API : PERMISSION_DENIED,所请求的操作无权限