【发布时间】:2013-07-08 12:38:08
【问题描述】:
为什么下面会失败?
expect([0,0]).to.equal([0,0]);
什么是正确的测试方法?
【问题讨论】:
为什么下面会失败?
expect([0,0]).to.equal([0,0]);
什么是正确的测试方法?
【问题讨论】:
【讨论】:
.deepEqual() (chaijs.com/api/assert)。
to.deep.equal(['a','b']) 似乎不起作用。但是to.have.all.members(['a','b']) 可以。好麻烦……
尝试使用深度相等。它将比较嵌套数组和嵌套 Json。
expect({ foo: 'bar' }).to.deep.equal({ foo: 'bar' });
【讨论】:
expect([1, 5, 10].sort()).to.deep.equal([1, 10, 5])
对于无序的深度相等,使用 members
expect([1,2,3]).to.have.members([3,2,1]); // passes expect([1,2,3]).to.have.members([1,2,3]); // passes expect([1,2,3]).to.eql([3,2,1]); // fails
【讨论】:
您可以使用.deepEqual()
const { assert } = require('chai');
assert.deepEqual([0,0], [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.
【讨论】:
你可以使用
https://www.chaijs.com/api/assert/#method_samedeepmembers
assert.sameDeepMembers(set1, set2, [message])
断言set1 和set2 具有任何顺序的相同成员。使用深度相等检查。
assert.sameDeepMembers([ { a: 1 }, { b: 2 }, { c: 3 } ], [{ b: 2 }, { a: 1 }, { c: 3 }], 'same deep members');
【讨论】:
这是使用 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');
【讨论】: