ソースコードから理解する技術-UnderSourceCode

手を動かす(プログラムを組む)ことで技術を理解するブログ

Rails3、RSpec2 - Viewのテストで「undefined method `has_tag?'」「undefined method `has_selector?'」

久しぶりにRSpecでViewのテストを書いていたら、タイトルのエラーが発生しました。

・rendered.should have_tag → undefined method `has_tag?'
・rendered.should have_selector → undefined method `has_selector?'

実行環境は以下の通りです。
ruby 2.0.0p0
Rails 3.2.12
RSpec 2.13.1

いろいろ調べたところ、以前は使用できたhave_tagは、RSpec2では使用できなくなったようです。
(間違っていたら、指摘してください・・・。)

結局、Rails3でタグの値をテストするには
1.Gemfileに「gem 'capybara'」を記述し、$ bundle install を実行する
2.rendered.should have_selector("タグ名", "値") でテストを記述する
3.have_tagはcapybaraに用意されてないので使用しない
ことで解決しました。

以上です。

capybaraはhave_selector以外にも様々なメソッドを持っていそうです。
なので結論としては、Viewのテストをするなら、capybaraはGemfileに書いておくべき
かと思われます。