4

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

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

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 来实现。如果是这样,请你给一些想法。

4

1 回答 1

6

原来它很简单。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
于 2011-09-13T09:30:12.460 回答