capybaraとrails3を使ったRspecビューテスト 質問する

capybaraとrails3を使ったRspecビューテスト 質問する

RSpec がコントローラーとビューのテストを分離できる点は非常に気に入っていますが、Capybara マッチャーをビューのテストで動作させるのに問題があります。基本的に私が実現しようとしているのは次のようなことです。

describe "some page" do
  it "should render with lots of stuff" do
    assign ..
    render
    rendered.should have_button ('Any button') #or any capybara matcher, really
  end
end

ネット上で、capybara と rails3 を cucumber または rspec コントローラー テストでスムーズに動作するように構成する方法を示した投稿をいくつか見ましたが、これは私が本当に望んでいることではありません。つまり、可能な限り低いレベルでビューをテストするということです。

また、これを行う別の方法(多くのカスタム コードを必要とせず、nokogiri または適切なツールを使用してレンダリングされたものから指定されたセレクターを抽出するマッチャーをいくつか作成できることがわかっている)があれば、それも素晴らしいでしょう。capybara の使用は必須ではありません。

ベストアンサー1

コントローラー (およびビュー) をテストするときに、Capybara マッチャー (Webrat の負荷なし) を使用するオプションが追加されました。私は次のように使用しています:

describe GlobalizeTranslationsController do

  render_views
  let(:page) { Capybara::Node::Simple.new(@response.body) }

  describe "PUT :update" do
    before do
      put :update
    end

    it "displays a flash notice" do
      page.should have_selector('p.notice')
    end

  end

end

完全なコード:

参考文献:

おすすめ記事