Rails3: Как мне посетить поддомен в спецификации стейка (rspec) с использованием Capybara
Я хочу получить доступ к user1.application.local.dev/panel/new из спецификации стейка.
Как мне это сделать?
2 ответа
Шаг 1. Настройте локальный DNS.
http://intridea.com/2010/6/2/using-bind-locally-on-os-x-for-easy-access-to-subdomains?blog=company
Шаг 2. Используйте драйвер Capybara, который поддерживает субдомены.
Либо Селен, либо Акефалос справятся с задачей.
Создайте spec / support / custom_env и поместите в него этот контент:
#Capybara.default_driver = :selenium
Capybara.default_driver = :akephalos
Capybara.app_host = 'http://davinci.testing.dev:8082'
Capybara.run_server = false
Capybara.server_port = 8082
Выберите драйвер для капибары, который вы хотите, либо Selenium или Akpehalos или все, что вы хотите, кроме Rack-Test (по умолчанию)
Разумеется, укажите домен и порт по вашему выбору.
Шаг 3:
Добавьте блок config.before в ваш spec / spec_helper.rb
RSpec.configure do | config |
config.before: каждый делает Capybara.app_host = " http://davinci.testing.dev:8082/" конец
конец
Разумеется, укажите домен и порт по вашему выбору.
Шаг 4:
Добавьте помощника для переключения поддоменов.
Spec / прием / поддержка / helpers.rb
def switch_to_subdomain(subdomain)
Capybara.app_host = "http://#{subdomain}.davinci.testing.dev:8082"
end
Разумеется, укажите домен и порт по вашему выбору.
Шаг 5. Используйте вспомогательный метод в вашей спецификации.
Теперь каждый раз, когда вы хотите изменить поддомен, вы делаете:
scenario "Show school" do
school = School.make!(:name=>"perico")
switch_to_subdomain(school.name)
visit("/")
page.has_content?("Welcome to perico")
end
Это вопрос Капибары. Установить default_host
когда тебе это нужно
Capybara.default_host = 'sub.domain.com'