Rails3: Как мне посетить поддомен в спецификации стейка (rspec) с использованием Capybara - PullRequest
6 голосов
/ 19 декабря 2010

Я хочу получить доступ к user1.application.local.dev/panel/new из спецификации стейка.

Как мне это сделать?

Ответы [ 2 ]

6 голосов
/ 24 декабря 2010

Шаг 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
4 голосов
/ 21 декабря 2010

Это вопрос Капибары. Установите default_host, когда вам это нужно

Capybara.default_host = 'sub.domain.com' 
...