-1

Rails の統合テストを作成しており、作成されたオブジェクトと送信された JSON オブジェクトを比較したいと考えています。返されたオブジェクトは、送信されたオブジェクトとまったく同じではありません (つまり、返されたオブジェクトの関連付けを取得するためにアクティブなモデル シリアライザーを使用しているため、送信されたオブジェクトにはないキーが含まれています)。基本的に、両方のオブジェクト間で同じキーをすべて比較して、同じかどうかを確認したいだけです。私のためにこれを行うクリーンで効率的なコードスニペットがあるかどうか教えてください!

4

3 に答える 3

0

Hash#sliceActive Support コア拡張機能である を使用できます。

たとえば、チェックしたいキーが:a, :b, :cであるが、結果に が含まれている:a, :b, :c, :d場合、slice結果を減らして、関心のあるキーのみを含むようにします。

expected = { :a => 1, :b => 2, :c => 3 }
result   = { :a => 1, :b => 2, :c => 3, :d => 4 }

result.slice(:a, :b, :c) == expected
# => true

例外が発生した場合NoMethodError: undefined method 'slice'は、要求する必要がありますactive_support/core_ext/hash/slice

于 2013-08-26T22:25:09.277 に答える