Как правильно использовать Capybara в функциональных тестах Rails 3.x? - PullRequest
2 голосов
/ 20 февраля 2012

Итак, Rails генерирует некоторые функциональные тесты для контроллеров в каталоге test/functional. Эти тесты простираются от ActionController::TestCase.

Но на веб-сайте 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

Но они не упоминают, как настроить Capybara для использования с функциональными тестами. Какой правильный способ сделать это?

Ответы [ 2 ]

2 голосов
/ 20 февраля 2012

Вы не будете использовать Capybara, потому что это инструмент для веб-страниц. Функциональное тестирование не предполагает этого. Вам просто нужно доказать, что логика вашего контроллера имеет правильное поведение. Для этого достаточно RSpec.

См. http://rubydoc.info/gems/rspec-rails/frames Характеристики контроллера раздел.

0 голосов
/ 15 сентября 2012

Capybara предоставляет действительно хороший синтаксис, который также можно использовать в функциональных тестах. Вам просто нужно обернуть функцию страницы, чтобы вернуть Capybara :: Node :: Simple wrapped @ response.body.

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

Из документа Капибара:

A {Capybara :: Node :: Simple} является более простой версией {Capybara :: Node :: Base}, которая включает в себя только {Capybara :: Node :: Finders} и {Capybara :: Node :: Matchers} и не включает {Capybara :: Node :: Actions}.

Мо информация:

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

...