我想要做的是使用chai.js比较2个基元数组,但不考虑元素的顺序 - 比如它们是2组。
现在显然我可以这样做:
const actual = ['a', 'b', 'c'];
const expected = ['b', 'c', 'a'];
expect(actual).to.have.length(expected.length);
expected.forEach(e => expect(actual).to.include(e));
但我很好奇是否有一种首选的“内置”方式(我在文档中找不到它)。
答案 0 :(得分:6)
expect([4, 2]).to.have.members([2, 4])
答案 1 :(得分:1)
您可以使用chai BDD中的members assertion。
var mocha = require('mocha');
var should = require('chai').should();
let a = ['a', 'b', 'c'];
let b = ['c', 'a', 'b'];
let c = ['d', 'e', 'c', 'b'];
describe('test members', function() {
it('should pass', function() {
a.should.have.members(b);
});
it('should fail', function() {
a.should.not.have.members(c);
});
});
答案 2 :(得分:1)
expect([4, 2]).to.have.members([2, 4])
以上的答案不会检查作者提到的大小。
expect([1,2,2]).to.have.members([1,2])
将通过测试。
最好的选择是使用https://www.chaijs.com/plugins/deep-equal-in-any-order/