首页 > 解决方案 > 当返回包含一项的数组时,邮递员测试对数组的测试失败

问题描述

我有一个邮递员测试用例:

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"甚至可能吗?或者是否有可能无法识别数组,因为其中只有一个对象?

标签: postman

解决方案


改用 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”,因为它们是可变的,因此它是一个对象


推荐阅读