Javascript 用于比较Nightwatch.js中数组的自定义断言不起作用

Javascript 用于比较Nightwatch.js中数组的自定义断言不起作用,javascript,arrays,node.js,nightwatch.js,assertions,Javascript,Arrays,Node.js,Nightwatch.js,Assertions,我使用基于nightwatch.js的nightwatch cumber作为测试框架来实现我的自动end2end测试。所以,我对“JavaScript”和“node.js”还是新手。目前,我想在Nightwatch中创建一个自定义断言,但在测试执行时出现了一个错误,我不知道我做错了什么 我得到以下错误: 测试数组是否相等。-预期为“true”,但得到:“[对象]” 断言应该比较给定数组中的不同数组(如果它们继承相同的值)。因此,作为参数给出的数组应该是这样的var myArray[[1,2,3]

我使用基于
nightwatch.js
nightwatch cumber
作为测试框架来实现我的自动end2end测试。所以,我对“JavaScript”和“node.js”还是新手。目前,我想在Nightwatch中创建一个自定义断言,但在测试执行时出现了一个错误,我不知道我做错了什么

我得到以下错误:

测试数组是否相等。-预期为“true”,但得到:“[对象]”

断言应该比较给定数组中的不同数组(如果它们继承相同的值)。因此,作为参数给出的数组应该是这样的
var myArray[[1,2,3],[3,2,1]]
。断言应该将给定数组中的所有数组相互比较

以下是我的自定义断言:

var equals = require('array-equal');
var util = require('util');

exports.assertion = function(array, msg=null) {
    this.message = msg || util.format('Testing if arrays are equal.');
    this.expected = true;

    this.pass = function(value) {
        return value === this.expected;
    };

  this.value = function(result) {
    return result.value;
  };

    this.command = function(callback) {
        let params = [array];

      let execute = function(array) {
        for (var i = 0; i < array.length; i++) {
          for (var k = i+1; k < array.length; k++) {
            array[i].sort();
            array[k].sort();
            if (equals(array[i], array[k]) === false) {
              return false;
            }
          }
        }
        return true;
      };

      let execcallback = result => {
        if (callback) {
          return callback.call(this, result);
        }
      };

      return this.api.execute(execute, params, execcallback);
    };
};
module.exports = {
  elements: {},
  commands: [{

    compareArrays() {
      var list = [[1,2,3],[3,2,1]];
      //I expect a passed assertion because the values in both arrays are equal
      this.assert.arraysEqual(list);
      return this.api;
    }
  }]
};

你在圈里干什么? 你为什么不把这个地方

array[i].sort();
array[k].sort();
if (equals(array[i], array[k]) === false) {
   return false;
}