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;
}