2012-02-20 2 views
2

그래서 레일스는 test/functional 디렉토리의 컨트롤러에 대한 몇 가지 기능 테스트를 생성합니다. 이 테스트는 ActionController::TestCase에서 연장됩니다.Rails 3.x 기능 테스트에서 Capybara를 사용하는 적절한 방법은 무엇입니까?

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 

을하지만이 기능 테스트에 사용하는 방법을 카피 바라 설정을 언급하지 않습니다

그러나 카피 바라의 웹 사이트에

, 그들은 단지 원숭이 ActionDispatch::IntegrationTest을 패치하여 통합 시험을 준비하는 방법을 보여줍니다. 그렇게하는 올바른 방법은 무엇입니까?

답변

2

Capybara는 웹 페이지 용 도구이기 때문에 사용하지 않을 것입니다. 기능 테스트에는 그러한 테스트가 포함되지 않습니다. 컨트롤러 로직이 올바른 동작을한다는 것을 증명해야합니다. 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 

:

{카피 바라 :: 노드 :: 간단한}는 단지 {카피 바라 :: 노드를 포함 {카피 바라 :: 노드 :: 자료}의 간단한 버전입니다 :: Finders}와 {Capybara :: Node :: Matchers}를 포함하고 {Capybara :: Node :: Actions}는 포함하지 않습니다.

모 정보 :

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

관련 문제