Hash#values_at メソッド と RSpec
前も書いたように、RSpecを書くときには出来るだけコンパクトに書きたくなります。
しかし、Railsのモデルで操作を行った結果のうち数個の属性(カラム)の内容のみを記述したい場合は
it "...." do .... #操作 @model.name.should == "山田太郎" @model.age.should == 32 @model.tel.should == "03-3333-4444" end
のように記述が複数行になっていまいます。@model.inspect.should == "..." のように書けば1行で書けますが、属性が多数あるモデルでは期待値の記述が膨大になります ^^;
そこで、 ActiveRecord::Base#attributes() メソッドを使い、モデルの値をHashにし、Hash#values_at を使って必要な属性のみ取り出すと。
it "...." do .... #操作 @model.attributes.values_at("name", "age", "tel").should == ["山田太郎", 32, "03-3333-4444"] end
のようにコンパクトに書けます ^^)/
実は、Hash#values_at というメソッドは今日、初めて知りました ^^);