Answers:
对于Expect,.equal
将比较对象而不是它们的数据,在您的情况下,它是两个不同的数组。
使用.eql
以深深的比较值。查看此链接。
或者您可以使用.deep.equal
来模拟与.eql
。
或者,您可能要检查一下 .members
。
对于声称可以使用.deepEqual
,链接。
to.deep.equal(['a','b'])
似乎不起作用。但是to.have.all.members(['a','b'])
。太麻烦了……
这是使用chai深度测试关联数组的方法。
我遇到一个问题,试图断言两个关联数组相等。我知道这些实际上不应在javascript中使用,但我正在围绕旧代码编写单元测试,该代码返回对关联数组的引用。:-)
我通过在函数调用之前将变量定义为对象(而非数组)来实现此目的:
var myAssocArray = {}; // not []
var expectedAssocArray = {}; // not []
expectedAssocArray['myKey'] = 'something';
expectedAssocArray['differentKey'] = 'something else';
// legacy function which returns associate array reference
myFunction(myAssocArray);
assert.deepEqual(myAssocArray, expectedAssocArray,'compare two associative arrays');
.deepEqual()
(chaijs.com/api/assert)。