【问题标题】:Rails3: How do I visit a subdomain in a steak(rspec) spec using CapybaraRails3:如何使用 Capybara 访问 steak(rspec) 规范中的子域
【发布时间】:2010-12-19 18:29:10
【问题描述】:

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

我该怎么做?

【问题讨论】:

    标签: ruby-on-rails rspec capybara


    【解决方案1】:

    第 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 都可以解决问题。

    创建 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 做 |config|
    config.before:每个都做 Capybara.app_host = "http://davinci.testing.dev:8082" 结束
    结束

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

    第 4 步:

    添加一个助手来切换子域。

    Spec/acceptance/support/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
    

    【讨论】:

    • 这个答案真的很有帮助!
    【解决方案2】:

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

    Capybara.default_host = 'sub.domain.com' 
    

    【讨论】:

    • 这仅在您不使用机架测试时有效。它适用于 Selenium 和 Akephalos。
    猜你喜欢
    • 2014-04-13
    • 1970-01-01
    • 2011-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多