Совместное использование вебрат и капибары - PullRequest
10 голосов
/ 17 мая 2011

Я использовал Capybara для тестирования интеграции / запроса, но только что понял, что не могу выполнить тестирование просмотра с ним.

Этот ответ SO предполагает, что Webrat и Capybara могут использоваться в тандеме; но RSpec docs предполагает, что нужно выбирать между двумя. Вот еще одна ветка github , предлагающая использовать webrat для представлений и капибару для интеграции.

Я обнаружил, что если я включу 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 ]

11 голосов
/ 06 июня 2011

Как правило, нет причин использовать как вебрат, так и капибару. Выберите один (вероятно, Капибара). Тесты представления - плохая идея и не должны быть необходимы вообще; обычно ваши интеграционные тесты должны охватывать это основание.

Другими словами, исправьте свою стратегию тестирования, и проблема исчезнет.

6 голосов
/ 25 ноября 2011

В целом, я согласен с Марненом в том, что "просто выберите один из них, возможно, Капибара", но одной из возможных причин для их использования является постепенная миграция.

Скажем, у вас большой набор тестов ивы переносите его на 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.

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

...