Совместное использование вебрат и капибары

Я использовал 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.

Не идеально, но у меня это сработало.

Другие вопросы по тегам