Я пишу интеграционный тест на приложение направляющих с помощью webrat. После заполнения формы отправляют пользовательские нажатия, и учетная запись создается.
click_button "Submit"
assert_contain "Your Account Has Been Created"
Однако тестовые сбои:
expected the following element's content to include "Your Account Has Been Created":
You are being redirected.
<false> is not true.
Обычно для следования за перенаправлением я использовал бы post_via_redirect, но от просто рассмотрения примеров Webrat, click_button сопровождаемый assert_contain должен работать
Я только что начал использовать Webrat, таким образом, я пропускаю что-то очевидное здесь? Почему застревают я с ответом перенаправления?
Спасибо!
Deb
В новом приложении Rails 3 у меня также возникла эта проблема при тестировании простого метода, который включал вызов redirect_to в контроллере. Сам метод работал нормально, но Webrat возвращал ответ "Вы перенаправлены.".
Добавление шага "Then show me the page" в cucumber (чтобы страница, которую видит webrat, открывалась в браузере) показало ответ "You are being redirected." со ссылкой на ссылку example.org.
На основе этого я обнаружил патч Яннимака ( http://groups.google.com/group/webrat/browse_thread/thread/fb5ff3fccd97f3df ):
#/lib/webrat/core/session.rb
#starting at line 288
def current_host
- URI.parse(current_url).host || @custom_headers["Host"] || "www.example.com"
+ URI.parse(current_url).host || @custom_headers["Host"] || default_current_host
end
+ def default_current_host
+ adapter.class==Webrat::RackAdapter ? "example.org" : "www.example.com"
+ end
Внесение этих изменений устранило проблему, так что вызовы redirect_to с Webrat теперь работают правильно.
Есть ли у вас какая-либо аутентификация в ваших приложениях? Я предполагаю, что перенаправление происходит из-за того, что вы не прошли аутентификацию. Если мое предположение верно, напишите настройку для первого входа в систему с помощью Webrat.