【问题标题】:subdomain,testing using cucumber or capybara and rspec子域,使用 cucumber 或 capybara 和 rspec 进行测试
【发布时间】:2011-11-12 02:51:23
【问题描述】:

我项目的部分开发已经完成。我们的 公司要求我为开发的代码编写黄瓜测试用例 以及今后的发展。 路由文件有 admin 和 hosts.Devise 两个子域 正在使用。

现在我安装了 Cucumber 并为 第一个故事当非注册用户登陆主页时,进入 一封有效的电子邮件并被重定向到下一页..该页面没有 密码字段。

Scenario: Non registered user lands on beta home page. 
Given: I am on the homepage 
When: I enter valid email with "bahubalian...@gmail.com". 
Then: I should be redirected to request invitation page. 

问题出在我的路由文件中,我有,

constraints :subdomain => ADMIN_SUBDOMAIN do 
  .... 
  root :to => admin#index 
end 
constraints :subdomain => HOST do 
  ... 
  root :to => home#index. 
end 

现在我如何指定 path.rb 文件以在其中查找 root_path 那个特定的子域。 没有在子域约束之外写入 root_path。 这是我第一次进行测试。 我真的坚持这一点。非常感谢任何帮助。

我刚刚从某人那里得知,这可以使用 capybara 来实现。如果是这样,请您提供一些想法。

【问题讨论】:

    标签: ruby-on-rails-3 cucumber capybara rspec-rails


    【解决方案1】:

    原来它很简单。Capybara 提供了一个 default_host 方法。 所以我只需要提一下,

    When I visit subomain sub
    

    然后是webstep


    Given /^I visit subdomain (.*)$/ do |site_domain|
    
      site_domain = "http://sub.example.com" if site_domain == "admin"
    
      Capybara.default_host = site_domain
      visit "/"
    end
    

    更新:

    default_host 不应该被使用,因为它没有在文档中提到。 而是尝试在访问中使用绝对路径。

    Given /^I visit subdomain (.*)$/ do |site_domain|
    
      site_domain = "http://sub.example.com" if site_domain == "admin"
      visit site_domain
    end
    

    【讨论】:

    • 完美,但会话不能通过子域工作。如何将 cookie 域更改为“所有子域”类型 (.example.com)?
    猜你喜欢
    • 1970-01-01
    • 2012-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多