изменение домена / поддомена селена в сценариях огурца - PullRequest
1 голос
/ 27 апреля 2010

Итак, у меня есть веб-приложение Rails, которое использует субдомены для отделения функций администратора от общедоступных функций с использованием subdomain-fu. Таким образом, есть функциональность (которую я хочу протестировать!), Содержащаяся в двух URL (например, admin.example.com и www.example.com). Я хочу, чтобы некоторые сценарии работали с доменом администратора, а некоторые - с доменом www.

Моя проблема в том, что я не могу понять, как изменить домен, который использует селен, в любое время после запуска. Я могу положить что-то вроде этого в моем env.rb:

Webrat.configure do |config|
  config.mode = :selenium
  config.application_address = "admin.example.com"
end

И это будет работать, но только для сценариев, которым нужен домен администратора. Если я попробую что-то вроде:

host! "www.example.com"

внутри моих шагов, ну, кажется, это просто игнорируется селеном, который продолжает использовать "admin.example.com"

Есть идеи? Или, если это невозможно, есть идеи для обхода?

Ответы [ 2 ]

1 голос
/ 15 июня 2010

У меня не работает это с помощью Webrat, но с Cabybara у меня работает следующее.

Given /^I visit subdomain "(.+)"$/ do |sub|
  # host! "#{sub}.example.com" #for webrat
  Capybara.default_host = "#{sub}.example.com" #for Rack::Test
  Capybara.app_host = "http://#{sub}.example.com:9887" if Capybara.current_driver == :selenium

  ################################################################################
  # As far as I know, you have to put all the {sub}.example.com entries that you're
  # using in your /etc/hosts file for the Culerity tests. This didn't seem to be
  # required for Rack::Test
  ################################################################################
end
0 голосов
/ 28 апреля 2010

Я никогда не использовал webrat, но в обычном тесте, если бы вы открыли полный путь вместо относительного пути в открытом.

так

selenium.open("http://foo/bar"); заставит тест перейти на полный URL

...