Rails3:如何使用Capybara访问牛排(rspec)规范中的子域

时间:2010-12-19 18:29:11

标签: ruby-on-rails rspec capybara

我想从牛排规格中访问user1.application.local.dev/panel/new。

我该怎么做?

2 个答案:

答案 0 :(得分:6)

步骤1.设置本地DNS。

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

步骤2.使用支持子域的Capybara驱动程序。

无论是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

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

当然,请选择您选择的域名和端口。

第3步:

将config.before块添加到spec / spec_helper.rb

RSpec.configure do | config |
  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

答案 1 :(得分:4)

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

Capybara.default_host = 'sub.domain.com'