Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 4 如何使用rspec测试段塞url_Ruby On Rails 4_Rspec - Fatal编程技术网

Ruby on rails 4 如何使用rspec测试段塞url

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

我有一个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(.: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
定义

更多信息