2016-02-03 30 views
0

编写一些测试并运行错误。阵列对我来说看起来是一样的,但显然不是。这是我得到的错误。任何想法如何解决它?期望数组为阵列

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


}); 

回答

2

不能直接试阵质量,你正在做的方式。 [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))

0

除了Travis's answer。 Should.js还提供.eql and .deepEqual断言,测试深层次的相等性:

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