我想测试嵌套属性“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/