Techioz Blog

Rspec: “array. should == another_array” ただし、順序は考慮されません

概要

配列を比較し、配列に同じ要素が任意の順序で含まれていることを確認したいことがよくあります。 RSpec でこれを行うための簡潔な方法はありますか?

受け入れられないメソッドは次のとおりです。

例えば:

expect(array.to_set).to eq another_array.to_set

または

array.to_set.should == another_array.to_set

配列に重複した項目が含まれている場合、これは失敗します。

例えば:

expect(array.sort).to eq another_array.sort

または

array.sort.should == another_array.sort

配列要素が #<=> を実装していない場合、これは失敗します。

解決策

array. should =~ another_array を試してください

これに関する最良のドキュメントは、ここにあるコード自体です。