Ruby on rails 4 如何使用rspec测试段塞url
我有一个rails应用程序,其中使用了段塞URL。如何使用Rspec测试这些URL rake routes正在生成以下结果Ruby on rails 4 如何使用rspec测试段塞url,ruby-on-rails-4,rspec,Ruby On Rails 4,Rspec,我有一个rails应用程序,其中使用了段塞URL。如何使用Rspec测试这些URL rake routes正在生成以下结果 new_user_session GET /login(.:format) sessions#new user_session POST /login(.:format) sessions#create bays GET /:slug/bays(.:for
new_user_session GET /login(.:format) sessions#new
user_session POST /login(.:format) sessions#create
bays GET /:slug/bays(.:format) bays#index
POST /:slug/bays(.:format) bays#create
new_bay GET /:slug/bays/new(.:format) bays#new
edit_bay GET /:slug/bays/:id/edit(.:format) bays#edit
bay GET /:slug/bays/:id(.:format) bays#show
PATCH /:slug/bays/:id(.:format) bays#update
PUT /:slug/bays/:id(.:format) bays#update
DELETE /:slug/bays/:id(.:format) bays#destroy
现在,当我为bays控制器运行rpec时,我发现了以下错误
Failure/Error: get :index, {}, valid_session
ActionController::UrlGenerationError:
No route matches {:action=>"index", :controller=>"bays"}
使用
rspec-rails (3.0.1)
rails (4.0.0)
正如你所定义的。。。间隔索引需要一个
:slug
参数。根据错误消息,您没有向该路由传递任何slug。您必须通过:slug
(例如get:index,:slug=>“1234”,有效的\u会话
)或重新定义路由以不需要它
用于rspec中的测试路由。。。这是rspec的一个基本部分:
在你的情况下,应该是这样的:
{ :get => "/1234/bays" }.
should route_to(
:controller => "bays",
:slug => "1234"
)
对于rspec 3.x,您可以选择:
scenario 'get correct slug', :type => :routing do
expect(get("/models/slug")).to route_to(:controller => "controller_name", :action => 'action_name', :id => "your_slug_name")
end
注意块前面的type::routing
定义
更多信息