RSpecでテストを書いていてよく
hoge.instance_variable_get(:@piyo).should == 'hehehe'
とか書きますよね
毎回indtance_variable_getを書くのが面倒なのでマッチャにしておくと簡単にテストできます
Rspec::Matcher.define :be_in do |name, val| match do |klass| klass.instance_variable_get("@#{name}").should == val end end
be_inというマッチャを定義して、インスタンス変数の取得から比較までをくるんで置きます
ついでに@hogehogeと書かなくて良いようにしています
これでテストからは以下のように使えます
hoge.should be_in(:piyo, 'hehehe')
エラーメッセージなど、もっと細部までこだわりたい場合は公式のドキュメントに詳しく書いてあるので参照してください
http://rspec.rubyforge.org/rspec/1.2.9/classes/Spec/Matchers.html
# このマッチャの良い名前が思いつかないので良い案があれば教えてください