Ani*_*uja 4 cucumber capybara rspec-rails ruby-on-rails-3
我的项目开发的一部分已经完成.我们公司要求我为开发的代码和今后的开发编写黄瓜测试用例.routes文件有两个子域用于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.
Run Code Online (Sandbox Code Playgroud)
问题出在我的路线文件中,我有,
constraints :subdomain => ADMIN_SUBDOMAIN do
....
root :to => admin#index
end
constraints :subdomain => HOST do
...
root :to => home#index.
end
Run Code Online (Sandbox Code Playgroud)
现在,我如何指定path.rb文件以查找该特定子域中的root_path.没有root_path写在子域约束之外.这是我第一次参加测试.我真的很坚持这一点.非常感谢任何帮助.
我只是从某人那里得知,这可以用capybara来实现.如果是这样,你能不能对它有所了解.
原来它非常简单.Capybara提供了default_host方法.所以我只需要提一下,
When I visit subomain sub
Run Code Online (Sandbox Code Playgroud)
然后是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
Run Code Online (Sandbox Code Playgroud)
更新:
不应该使用default_host,因为文档中没有提到它.而是尝试在访问中使用绝对路径.
Given /^I visit subdomain (.*)$/ do |site_domain|
site_domain = "http://sub.example.com" if site_domain == "admin"
visit site_domain
end
Run Code Online (Sandbox Code Playgroud)