【发布时间】:2011-09-29 16:52:57
【问题描述】:
我正在尝试编写一些 rspec 集成测试来测试我的条件路由是否正确路由,但我遇到了很多问题。
在 routes.rb 中:
root :to => "error#ie6", :constraints => {:user_agent => /MSIE 6/}
root :to => "protocol_sets#index", :constraints => UserRoleConstraint.new(/doctor/i)
root :to => "refill_requests#create", :constraints => UserRoleConstraint.new(/member/i)
root :to => "refill_requests#create", :constraints => {:subdomain => "demo"}
root :to => "site#index"
在 spec/requests/homepage_routing_spec.rb 中
require 'spec_helper'
describe "User Visits Homepage" do
describe "Routings to homepage" do
it "routes / to site#index when no session information exists" do
visit root_path
end
end
end
我在尝试运行测试时收到以下错误。
失败: 1) 当不存在会话信息时,用户访问主页路由到主页路由/到 site#index 失败/错误:访问 root_path 无方法错误: nil:NilClass 的未定义方法“匹配” # :10:在“同步”中 # ./spec/requests/homepage_routings_spec.rb:6:in `block (3 levels) in ' 在 0.08088 秒内完成 1个例子,1个失败 失败的例子: rspec ./spec/requests/homepage_routings_spec.rb:5 # 用户访问主页路由到主页路由/到站点#index 当不存在会话信息时通过谷歌搜索,我猜测 rspec/capybara 处理条件路由的方式可能存在问题。
有没有用 rspec 和 capybara 测试路由的约束?
【问题讨论】:
标签: ruby-on-rails rspec routing capybara