2012-02-20 12 views
2

したがって、test/functionalディレクトリのコントローラの機能テストがいくつか生成されます。これらのテストはActionController::TestCaseから拡張されています。Rails 3.xの機能テストでCapybaraを使用する適切な方法は何ですか?

しかし、カピバラのウェブサイトでは、彼らが唯一のActionDispatch::IntegrationTestにパッチを適用猿によって統合テストを準備する方法を示しています。

DatabaseCleaner.strategy = :truncation 

class ActionDispatch::IntegrationTest 
    # Make the Capybara DSL available in all integration tests 
    include Capybara::DSL 

    # Stop ActiveRecord from wrapping tests in transactions 
    self.use_transactional_fixtures = false 

    teardown do 
    DatabaseCleaner.clean # Truncate the database 
    Capybara.reset_sessions! # Forget the (simulated) browser state 
    Capybara.use_default_driver # Revert Capybara.current_driver to Capybara.default_driver 
    end 
end 

しかし、彼らはセットアップにカピバラは、機能テストで使用する方法について言及していません。それを行う正しい方法は何ですか?

答えて

2

カピバラはWebページのツールであるため、使用しません。機能テストにはそれが含まれていません。コントローラのロジックが適切な動作をしていることを証明するだけです。そのためRSpecで十分です。

http://rubydoc.info/gems/rspec-rails/framesコントローラ仕様セクションを参照してください。

0

Capybaraは機能テストでも使用できる素晴らしい構文を提供します。あなたは、単にCapybara :: Node :: Simple wrapped @ response.bodyを返すためにページ関数をラップする必要があります。カピバラのRDOCから

class Test::Unit::TestCase 
    def page 
    Capybara::Node::Simple.new(@response.body) 
    end 
end 

A {カピバラ::ノード::単純}のみ{カピバラ::ノードと、{カピバラ::ノード::基地}の単純なバージョンである:: Finders}と{Capybara :: Node :: Matchers}を含み、{Capybara :: Node :: Actions}は含みません。

のMo情報:

http://robots.thoughtbot.com/post/8087279685/use-capybara-on-any-html-fragment-or-page

関連する問題