2010-12-19 41 views

回答

6

第1步。设置本地DNS。

http://intridea.com/2010/6/2/using-bind-locally-on-os-x-for-easy-access-to-subdomains?blog=company

第2步:使用水豚驱动程序支持的子域。

Selenium或Akephalos都可以做到这一点。

创建规格/支持/ 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 

选择你想要的水豚驱动程序,可以硒或akpehalos或任何你想要的,除了机架测试(默认)

当然,把你的选择的领域和端口。

第3步:

的config.before块添加到您的规格/ spec_helper.rb

RSpec.configure做|配置|
config.before:每个做 Capybara.app_host = “http://davinci.testing.dev:8082” 结束

把你当然选择的域和端口。

第4步:

添加帮助器以切换子域。

规格/接受/支持/ 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 
+0

答案真的很有帮助! – 2011-04-13 04:28:37

4

这是一个水豚问题。在需要时设置default_host

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

这仅适用于不使用机架测试。它适用于Selenium和Akephalos。 – Nerian 2010-12-22 14:45:42