Как я могу заставить webrat следовать редиректам

В моем сценарии есть следующее:

And I click the link Log out
Then I should see the login page

Щелчок по ссылке Log out отправляет пользователя в /log_out, который перенаправляет обратно на страницу входа. Webrat терпит неудачу, потому что он ищет «Войти», но страница log_out пуста (это просто функция codeigniter, которая уничтожает сеанс и перенаправляет на /)

Как лучше всего заставить webrat понять, что ему нужно прочитать страницу в конце перенаправления?


person Zen    schedule 13.08.2012    source источник


Ответы (1)


Простым, но неэффективным способом было бы просто добавить сон на приблизительное время, необходимое для выполнения перенаправления.

And I click the link Log out
And I wait for 5 seconds
Then I should see the login page

Определение шага

When /^I wait for (\d+) seconds$/ do |time|
  sleep time.to_i
end

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

And I click the link Log out
Then within 30 seconds, I should see the login page

Определение шага

Then /^within (\d+) seconds, I should see the login page$/ do |time|
  sleep time.to_i until page.has_text? "Login"
  page.should have_content "Login"
end

Если вы обнаружите, что используете ожидание для других шагов, остальную часть шага после запятой можно обобщить.

person Francis    schedule 14.08.2012