Используя как webrat, так и capybara вместе
Я использую Capybara для тестирования интеграции/запроса, но только что понял, что я не могу выполнять просмотр с ним.
Этот ответ SO предполагает, что Webrat и Capybara могут использоваться в тандеме; но RSpec docs предлагают выбрать один из двух. Здесь другой поток github, который предполагает, что webrat может использоваться для представлений и capybara для интеграции.
Я обнаружил, что если я включу Webrat в свой gemfile, я могу использовать webrat для просмотра без проблем, но мои тесты интеграции в стиле capybara больше не работают. В частности, я получаю сообщение об ошибке со следующим простым примером:
it "should have a Home page at '/'" do
visit '/'
page.should have_selector('title', :content => "Home page")
end
Я получаю сообщение об ошибке:
No response yet. Request a page first.
Какой лучший способ (если есть?), чтобы заставить webrat и capybara любить друг друга?
Ответы
Ответ 1
Как правило, нет причин использовать как Webrat, так и Capybara. Выберите один (возможно, Capybara). Просмотр тестов - плохая идея и вообще не требуется; обычно ваши интеграционные тесты должны охватывать эту землю.
Другими словами, исправьте свою стратегию тестирования, и проблема исчезнет.
Ответ 2
В общем, я согласен с Марненом в том, что "просто выберите один из них, возможно, Capybara", но одна из возможных причин использовать их обоих - постепенная миграция.
Скажем, у вас есть большой набор тестов, и вы переносите его на Capybara, но вы хотите, чтобы некоторые из ваших старых тестов оставались "Webrat-driven" в течение некоторого времени.
Хотя, я не нашел идеального решения для этого случая, вот что я сделал:
# features/support/env.rb
...
if ENV['WITH_WEBRAT'].nil?
require 'capybara/rails'
require 'capybara/cucumber'
...
else
require 'webrat'
...
end
...
# config/cucumber.yml
...
default: --profile capybara
capybara: <% std_opts %> --tags [email protected] features
webrat: <% std_opts %> --tags @webrat features WITH_WEBRAT=1
...
# features/webrat.feature
@webrat
...
# features/capybara.feature
...
Теперь вы можете сделать cucumber
, чтобы запустить свой тестовый набор для capybara или cucumber -p webrat
для ваших устаревших функций Webrat.
Не идеально, но это сработало для меня.