Как следить за редиректом после нажатия ссылки / кнопки с огурцом и капибарой в rails?


В настоящее время я пытаюсь настроить интеграцию/приемочное тестирование для нового приложения rails 3 с огурцом и капибарой. (Я изначально планировал использовать webrat, но, похоже, он не поддерживает rails 3, поэтому я закончил с capybara)

Я пытаюсь заставить работать базовый тест входа:

Feature: Login user
  In order to access the non-public parts of the site,
  as a user,
  I want to login to the site

Scenario: login with valid credentials
  Given I am on the login page
  When I fill in "Email" with "bender@planetexpress.com"
  And I fill in "Password" with "pass"
  And I press "Login"
  Then I should be on the users home page
  And I should see "Login successful"

Проблема теперь в том, что форма входа отправляет меня в /user_session, которая затем перенаправляет меня в дом пользователей /home. Огурец не следует перенаправлению, которое вызывает строку Then I should be on the users home page к потерпеть неудачу.

Как я могу сказать cucumber/capybara следовать редиректу, чтобы я оказался на нужной странице после нажатия кнопки "перейти по ссылке"?

Похоже, что в драйвере rack_test есть метод follow_redirect!, который я использую, но он является частным, и я понятия не имею, как вызвать эту функциональность.

Заранее спасибо,
Саймон

3 7

3 ответа:

Капибара автоматически следует за перенаправлениями. Что-то еще сломано.

Добавьте это в ваши шаги:

When /^I dump.* the response$/ do
  puts body
end

Затем, когда ваши тесты плохо себя ведут, вы можете добавить "и я дамп ответа" к вашим шагам и посмотреть, куда это приведет с перенаправлениями или чем-то еще.

Что-то, что может сработать, - это переключение порядка утверждений:

Then I should see "Login successful"
And I should be on the users home page

Тогда проверка текущей страницы произойдет после проверки текста страницы. Огуречные тесты действительно требуют много отладки, удачи!