邮递员:如何断言所有数组元素存在于其他数组中?

Dev*_*Dev 9 javascript arrays json postman postman-testcase

我断言 array1 中的元素是否存在于 array2 中,下面是数组示例,

var array1 = [
        {
            "name": "appe",
            "loc": "war",
            "order": 5,
            "neck": "NO",
            "end": false
        },
        {
            "name": "con",
            "loc": "conve",
            "order": 15,
            "neck": "NO",
            "end": true
        }]

var array2 = [{"neck":"NO"
"end":true,
"loc":"conve",
"name":"con",
"order":15
}]
Run Code Online (Sandbox Code Playgroud)

我尝试过的代码 -

const lodash = require("lodash");
    for(var i = 0; i < array2.length; i++ )
    {
            tests['response json contain Data'] = lodash._.has(points, array2[i]);
            //pm.expect(array2[i]).to.be.oneOf(array1);

    }
Run Code Online (Sandbox Code Playgroud)

我得到的错误 -

response json contain Data | AssertionError: expected false to be truthy
Run Code Online (Sandbox Code Playgroud)

尝试另一次尝试后编辑2 -

pm.expect(array2[i]).to.be.oneOf(array1);
Run Code Online (Sandbox Code Playgroud)

错误 -

AssertionError | expected { Object (name, loc, ...) } to be one of [ Array(20) ]
Run Code Online (Sandbox Code Playgroud)

尝试3 -

pm.expect(array1).to.deep.equal(array2);
Run Code Online (Sandbox Code Playgroud)

错误 -

AssertionError | expected [ Array(20) ] to deeply equal [ Array(18) ]
Run Code Online (Sandbox Code Playgroud)

我做错了什么?我想要的是,如果 array2 中的任何一个元素不在 array1 中,它就会失败。
谢谢

Yev*_*kov 8

Chai 断言库默认包含在 Postman 的应用程序中。所以你需要使用to.deep.equal. 它将比较嵌套数组以及嵌套对象。

解决方案:

pm.test("verify two objects", function () {
  var array1 = [{
    "name": "appe",
    "loc": "war",
    "order": 5,
    "neck": "NO",
    "end": false
  },
  {
    "name": "con",
    "loc": "conve",
    "order": 15,
    "neck": "NO",
    "end": true
  }];

  var array2 = [{
    "neck": "NO",
    "end": true,
    "loc": "conve",
    "name": "con",
    "order": 15
  }, 
  {
    "neck": "NOo",
    "end": true,
    "loc": "conve",
    "name": "con",
    "order": 15
  }];

  pm.expect(array1).to.deep.equal(array2); // Failed
  pm.expect(array1).to.deep.equal(array1); // Passed

});
Run Code Online (Sandbox Code Playgroud)