将来の読者への注意:RSpecはあなたのハッシュを等しく見なさないと思いますか? 1つはOrderedHashかもしれませんが、通常のRSpec出力からはわかりません。これはこの投稿を促した問題でした。ハッシュと一致するRSpec2マッチャーは存在しますか?
オリジナル質問:
は、私はこの方法が適切なハッシュを生成することをテストしたいスペックを持っていると仮定します。
it 'should generate the Hash correctly' do
expected = {:foo => 1, 'baz' => 2}
subject.some_method_that_should_generate_the_hash.should == expected
end
同じキーと値のペアを持つ別々のハッシュが異なる順序でペアを返すことがあるため、これはしばしば失敗します。結果は次のようになります。
アレイの場合、これは=〜演算子を使用して解決します。しかし、それはハッシュに対しては機能しません。今のところ、私は
it 'should generate the Hash correctly' do
expected = {:foo => 1, 'baz' => 2}
subject.some_method_that_should_generate_the_hash.each {|k,v|
v.should == expected[k]
}
end
に頼りましたが、それは不必要に冗長であるようです。私はそこには明らかな解決策があることを期待しています。私はドキュメントの中の何かを見落としているのですか?あるいは、RSpecは無秩序なハッシュ平等のための適切なMatcherを持っていませんか?
昨日遅れて問題が見つかりました。実際には2つのハッシュを比較していませんでした.1つは、途中でOrderedHashになっていました。あなたはRSpec出力からそのことを見ることはできません。そして、私がこのトラップに入ったのはこれが初めてではなかったと言って少し恥ずかしいです。/ – Confusion
面白いです。したがって、同じキーと値のペアを持つOrderedHashとHashは等しいとはみなされません。それは知っておくと良いことです。 – zetetic