为什么下面的会失败?
expect([0,0]).to.equal([0,0]);
正确的测试方法是什么呢?
为什么下面的会失败?
expect([0,0]).to.equal([0,0]);
正确的测试方法是什么呢?
当前回答
import chai from 'chai';
const arr1 = [2, 1];
const arr2 = [2, 1];
chai.expect(arr1).to.eql(arr2); // Will pass. `eql` is data compare instead of object compare.
其他回答
对于无序深度相等,使用成员
期望([1,2,3]).to.have.members ((3,2,1));/ /传递期望([1,2,3]).to.have.members ([1, 2, 3]);//传递expect([1,2,3]).to.eql([3,2,1]);/ /失败
源
对于expect, .equal将比较对象而不是它们的数据,在您的示例中,它是两个不同的数组。
使用.eql来深度比较值。查看这个链接。 或者你可以使用.deep.equal来模拟。eql。 或者在你的情况下,你可能想检查。members。
对于断言,您可以使用. deepequal, link。
尝试使用深度等号。它将比较嵌套数组和嵌套Json。
expect({ foo: 'bar' }).to.deep.equal({ foo: 'bar' });
请参考主要文档网站。
import chai from 'chai';
const arr1 = [2, 1];
const arr2 = [2, 1];
chai.expect(arr1).to.eql(arr2); // Will pass. `eql` is data compare instead of object compare.
这是如何使用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');