postman - 当返回包含一项的数组时,邮递员测试对数组的测试失败
问题描述
我有一个邮递员测试用例:
pm.test("Check for property of type null or array", function(){
var isNullOrArray = (property === null || typeof(property) === "array");
pm.expect(isNullOrArray, "property is of type " + typeof(property)).to.be.true;
});
不幸的是,当我模拟一个返回一个数组的响应时,它只有一个这样的项目:
"property": [
{
"user_id": 1234,
"is_true": false
}
]
测试失败,在日志中我可以看到 typeof(property) 是一个对象。
该测试似乎适用于数组中包含多个项目的其他响应。我的测试有什么问题?typeof(property) === "array"
甚至可能吗?或者是否有可能无法识别数组,因为其中只有一个对象?
解决方案
改用 array.isArray ,在 javascript 类型的数组中返回对象,因为除原始类型外,javascript 中的所有内容都是对象(意味着只有不可变的数据类型被视为非对象)
pm.test("Check for property of type null or array", function(){
var isNullOrArray = (property === null || Aarray.isArray(property));
pm.expect(isNullOrArray, "property is of type " + typeof(property)).to.be.true;
});
https://developer.mozilla.org/en-US/docs/Glossary/Primitive,数组不是原始数据类型,因此被视为对象
a = [1,2,3]
b =a
a[2] = 5
console.log(b)
您可以看到更改“a”会更改“b”,因为它们是可变的,因此它是一个对象
推荐阅读
- java - IntelIiJ 错误?类不被识别
- php - 尝试使用 PHP 中存储在数组中的数据为每个员工添加总计
- javascript - 重新启动时删除地图
- mysql - 将 mysql 默认字符集更改为 utf8 会影响我数据库中的其他数据吗?像 UUID、加密的、blob 等
- swift - 为什么 TypeScript 接受不使用“?” 如果对象是可选的,则运算符?
- visual-studio - 在解决方案资源管理器中查找从项目中排除的 CPP 文件需要帮助
- python - 如何对名词进行词形还原?
- java - 如何在 Java 中使图像的矩形部分变暗?
- node.js - 在 node.js 中,IP 地址不断变化。但我认为本地计算机 IP 地址是不变的
- json - 使用命令的输出在 bash 中创建 JSON 对象以脱颖而出