2011-09-07 108 views
4

我的项目的一部分开发已完成。我们的 公司要求我为开发的代码 编写黄瓜测试用例以及今后的开发。 路由文件有两个子域用于管理员和主机.Devise也使用 。子域,使用黄瓜或水豚和rspec测试

现在我安装了黄瓜和写的第一个场景的 第一个故事时,主页上的非registerd用户的土地,进入 一个有效的电子邮件和被重定向到下一个页面page..the没有 密码领域。

Scenario: Non registered user lands on beta home page. 
Given: I am on the homepage 
When: I enter valid email with "[email protected]". 
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在 特定子域。 Theres no root_path写在子域约束之外。 这是我第一次进行测试。 我真的坚持到此。任何帮助深表谢意。

我刚刚从某人那里知道,这可以使用水豚来实现。如果是这样,请给我一点关于它的想法。

回答

6

原来这很简单。水豚提供了一个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 
+0

上帝保佑你:D – imderek

+0

完美的,但会议不通过子域。如何将cookie域更改为“所有子域”类型(.example.com)? –