期望数组是数组

Expect array to be array

编写一些测试,运行 遇到错误。阵列对我来说似乎是一样的,但显然不是。这是我得到的错误。知道如何修复它吗?

Expected Array [ 'A2T1511300361', 'A2T1511300362' ] to be Array [ 'A2T1511300361', 'A2T1511300362' ]

test.js

var should = require('should'), 
io = require('socket.io-client'),
path = require('path'),
express = require(path.resolve('./config/lib/express')),
mongoose = require('mongoose'),
sinon = require('sinon')   

...

client.on('printerList', function(list){

    var tempArray = [];
    tempArray.push('A2T1511300361');
    tempArray.push('A2T1511300362');
    console.log(tempArray);

    list.should.equal(tempArray);


});

您不能以您现在的方式直接测试阵列质量。 [1,2][1,2] 可能有相同的元素,但它们是 不同的 数组。更正式地说:

[ ] !== [ ] [ ] != [ ]

您正在尝试测试 深度 平等。为此,您需要检查每个数组元素。例如,lodash 中的许多方法可以帮助您解决这个问题。例如

// this uses ES6 syntax const _ = require('lodash') const arr1 = [1, 2] const arr2 = [1, 2] assert.equal(_.intersection(arr1, arr2).length, arr1.length)) assert.equal(_.intersection(arr1, arr2).length, arr2.length))

除了测试深度相等性的 . Should.js also provides .eql and .deepEqual 断言:

var expectedArray = [1, 2, 3];
var returnedArray = [1, 2, 3];
returnedArray.should.deepEqual(expectedArray);