4
が含まれているかどうかを確認しますか?何でもいいShould.js:2つの配列が、私は二つの配列を持っている同じ文字列
should(a).be.xyz(b)
それらをテストすることができますか?ここで、xyzは私が探しているものです。
が含まれているかどうかを確認しますか?何でもいいShould.js:2つの配列が、私は二つの配列を持っている同じ文字列
should(a).be.xyz(b)
それらをテストすることができますか?ここで、xyzは私が探しているものです。
ナイーブが、おそらく十分な解決策は、それらを比較する前にアレイをソートすることであろう。
should(a.sort()).be.eql(b.sort())
注sort()
works in-placeは、元の配列を変異こと。
should
のAssertion.add
機能でこれを実装できます。たとえば、
var a = ['a', 'as', 'sa'];
var b = ['sa', 'a', 'as'];
should.Assertion.add('haveSameItems', function(other) {
this.params = { operator: 'to be have same items' };
this.obj.forEach(item => {
//both arrays should at least contain the same items
other.should.containEql(item);
});
// both arrays need to have the same number of items
this.obj.length.should.be.equal(other.length);
});
//passes
a.should.haveSameItems(b);
b.push('d');
// now it fails
a.should.haveSameItems(b);
この回答は正しくありません。 .equalは参照の等価性のために===を使用します。 .eqlを使用する必要があります。 –
@denbardadymノートのおかげで、私の答えを更新しました。 – Timo