Webrat и Rails: использование assert_contain после нажатия кнопки click_button дает мне сообщение «Вы перенаправлены» - PullRequest
8 голосов
/ 04 июня 2010

Я пишу интеграционный тест для приложения rails с использованием 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

Ответы [ 4 ]

11 голосов
/ 13 августа 2010

С новым приложением Rails 3 у меня также была эта проблема при тестировании простого метода, который включал вызов redirect_to в контроллере. Сам метод работал нормально, но Webrat вернул бы «Вы перенаправлены». ответ.

Добавление шага «Тогда покажи мне страницу» в огурце (чтобы страница, которую видит вебрат, открылась в браузере) показало ответ «Вы перенаправлены» со ссылкой на ссылку 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 теперь работают правильно.

3 голосов
/ 30 января 2011

Есть некоторые проблемы с рельсами 3 и webrat. Пожалуйста, смотрите:

http://baldowl.github.com/2010/12/06/coercing-cucumber-and-webrat-to-cooperate.html

0 голосов
/ 26 февраля 2011

Вот суть того, что вам нужно сделать, чтобы решить эту проблему.

https://gist.github.com/752766

0 голосов
/ 04 июня 2010

Есть ли у вас аутентификация в ваших приложениях? Я предполагаю, что перенаправление происходит из-за того, что вы не прошли аутентификацию. Если мое предположение верно, напишите настройку для входа в систему сначала через Webrat.

...