Совместное использование вебрат и капибары
Я использовал Capybara для тестирования интеграции / запроса, но только что понял, что не могу выполнить тестирование с ним.
Этот SO-ответ предполагает, что Webrat и Capybara могут использоваться в тандеме; но документы RSpec предполагают, что нужно выбирать между двумя. Вот еще одна ветка github, в которой предлагается использовать webrat для представлений и capybara для интеграции.
Я обнаружил, что, если я включу Webrat в свой gemfile, я могу использовать webrat для представлений без проблем, но мои интеграционные тесты в стиле капибары больше не работают. В частности, я получаю ошибку в следующем простом примере:
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.
Каков наилучший способ (если есть?), Чтобы вебрат и капибара нравились друг другу?
2 ответа
Обычно нет причин использовать как вебрат, так и капибару. Выберите один (вероятно, Капибара). Тесты представления - плохая идея и не должны быть необходимы вообще; обычно ваши интеграционные тесты должны охватывать это основание.
Другими словами, исправьте свою стратегию тестирования, и проблема исчезнет.
В целом, я согласен с Марненом в том, что "просто выберите один из них, возможно, Капибару", но одной из возможных причин использовать оба из них является постепенная миграция.
Скажем, у вас есть большой набор тестов, и вы переносите его на Capybara, но вы хотите, чтобы некоторые из ваших старых тестов некоторое время оставались "управляемыми вебратом".
Хотя я не нашел идеального решения для этого случая, вот что я сделал:
# 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 ~@webrat features
webrat: <% std_opts %> --tags @webrat features WITH_WEBRAT=1
...
# features/webrat.feature
@webrat
...
# features/capybara.feature
...
Теперь вы можете сделать cucumber
запустить тестовый набор только для капибары или cucumber -p webrat
для ваших старых функций Webrat.
Не идеально, но у меня это сработало.