6

チャイですか、マッチャーはrspecsと同等です=~(つまり、すべての要素がありますが、順序は重要ではありません。

合格例

[1, 2, 3].should =~ [2, 1, 3]

失敗する

[1, 2, 3].should =~ [1, 2]
4

3 に答える 3

10

members最新の Chai バージョンで利用可能なテストを使用できます。

expect([4, 2]).to.have.members([2, 4]);
expect([5, 2]).to.not.have.members([5, 2, 1]);
于 2013-06-14T15:11:19.953 に答える
5

あるとは思いませんが、ヘルパーを作成することで簡単に作成できます:

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]);

于 2012-07-18T23:05:31.440 に答える
0

http://www.rubydoc.info/gems/rspec-expectations/frames#Collection_membership

expect([4, 2]).to match_array([2, 4])
于 2015-02-04T07:50:29.083 に答える