チャイですか、マッチャーはrspecsと同等です=~
(つまり、すべての要素がありますが、順序は重要ではありません。
合格例
[1, 2, 3].should =~ [2, 1, 3]
失敗する
[1, 2, 3].should =~ [1, 2]
チャイですか、マッチャーはrspecsと同等です=~
(つまり、すべての要素がありますが、順序は重要ではありません。
[1, 2, 3].should =~ [2, 1, 3]
[1, 2, 3].should =~ [1, 2]
members
最新の Chai バージョンで利用可能なテストを使用できます。
expect([4, 2]).to.have.members([2, 4]);
expect([5, 2]).to.not.have.members([5, 2, 1]);
あるとは思いませんが、ヘルパーを作成することで簡単に作成できます:
var chai = require('chai'),
expect = chai.expect,
assert = chai.assert,
Assertion = chai.Assertion
Assertion.addMethod('equalAsSets', function (otherArray) {
var array = this._obj;
expect(array).to.be.an.instanceOf(Array);
expect(otherArray).to.be.an.instanceOf(Array);
var diff = array.filter(function(i) {return !(otherArray.indexOf(i) > -1);});
this.assert(
diff.length === 0,
"expected #{this} to be equal to #{exp} (as sets, i.e. no order)",
array,
otherArray
);
});
expect([1,2,3]).to.be.equalAsSets([1,3,2]);
expect([1,2,3]).to.be.equalAsSets([3,2]);
flag
これは順序付けられていない等値テストではなく、設定された等値であることに注意してください。どちらの配列でもアイテムの重複が許可されます。これは、たとえば次のように渡します。expect([1,2,3]).to.be.equalAsSets([1,3,2,2]);
http://www.rubydoc.info/gems/rspec-expectations/frames#Collection_membership
expect([4, 2]).to match_array([2, 4])