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 というメソッドは今日、初めて知りました ^^);