如何使用rspec在路由规范中指定https协议?

mor*_*man 6 specifications rspec ruby-on-rails rspec-rails

在我的路线文件中,我有:

resources :subscription, :only => [:show], :constraints => {:protocol => "https"}
Run Code Online (Sandbox Code Playgroud)

我正在尝试为此路线添加一个规范,如下所示:

it "recognizes and generates #show" do
  { :get => "/subscription", :protocol => 'https' }.should route_to(:controller => "subscriptions", :action => "show")
end
Run Code Online (Sandbox Code Playgroud)

但是,规范仍然失败.如果我删除了:protocol => 'https',规范也失败了:

ActionController::RoutingError:    
  No route matches "/subscription" 

Joh*_*hir 4

(未记录?)解决方案是简单地包含整个虚拟 URL,如下所示:

it "recognizes and generates #show" do
  { :get => "https://test.host/subscription" }.should route_to(:controller => "subscriptions", :action => "show")
end
Run Code Online (Sandbox Code Playgroud)

我从这张票这个变更集中弄清楚了。

  • 为了使其正常工作,我必须将约束指定为“{protocol =>“https://”}”,而不是像人们所期望的那样简单地““https””。 (4认同)