RSpecで比較したい2つのハッシュh1
とh2
があります。RSpecで2つのハッシュを比較するにはどうすればよいですか?
h1
の要素が、変換後にh2
と同じであることを確認したい場合は、f
と呼びます。つまり、すべてのキーについてk
がh1
、h1[k] == f(h2[k])
にあることを確認したいと思います。 h2
内のすべての値が二回h1
の対応する値と同じ大きさであれば
はたとえば、私は、H1内のすべてのキーk
、h2[k] == h1[k] * 2
のためにそれを確認したいです。
RSpecでこれを行う正しい方法は何ですか?現在私は:
h1 = ...
expect(
h2.all? { |k,v|
v == f(h1[k])
}
).to be true
しかし、それはclunkyと思われる。
計算を行うヘルパーメソッド 'equal?(other)'を作成します。そこから 'expect(h2.equal?(h1))。true 'になります。 – onebree
あなたの質問は非常に誤解を招きます。あなたの説明とあなたのコードで 'h1'と' h2'の役割を切り替えています。 – sawa
また、あなたの説明(コードと同様に)はマッチングが1つの方法であると説明しています。つまり、説明テキスト中の 'h2'が' h1'のもの以外のキーを持っているかどうかは関係ありません。これはあなたの意図ですか? – sawa