路由测试失败:NoMethodError:"///"的未定义方法`values':String

Ysi*_*ras 4 ruby-on-rails rails-routing rspec-rails

我得到了一个失败的测试,我调试很困难.

我的测试用例是:

it "routes to #active" do
  get ("/parties/active").should route_to("parties#active")
end
Run Code Online (Sandbox Code Playgroud)

我的路线是:

resources :parties do
  get 'active', :on => :collection
end
Run Code Online (Sandbox Code Playgroud)

当我运行测试用例时,我收到以下错误:

NoMethodError: undefined method `values' for "/parties/active":String
Run Code Online (Sandbox Code Playgroud)

完整错误输出:https://gist.github.com/1748264

当我运行rake路线时,我看到:

active_parties GET    /parties/active(.:format)   parties#active
       parties GET    /parties(.:format)          parties#index
               POST   /parties(.:format)          parties#create
     new_party GET    /parties/new(.:format)      parties#new
    edit_party GET    /parties/:id/edit(.:format) parties#edit
         party GET    /parties/:id(.:format)      parties#show
               PUT    /parties/:id(.:format)      parties#update
               DELETE /parties/:id(.:format)      parties#destroy
          root        /                           parties#show
Run Code Online (Sandbox Code Playgroud)

我正在运行的测试几乎与脚手架生成的测试相同:

it "routes to #new" do
  get("/parties/new").should route_to("parties#new")
end
Run Code Online (Sandbox Code Playgroud)

知道发生了什么事吗?

Rya*_*igg 6

你在get和方法的参数之间放了一个空格.不要那样做.

你有这个:

it "routes to #active" do
  get ("/parties/active").should route_to("parties#active")
end
Run Code Online (Sandbox Code Playgroud)

什么时候应该这样:

it "routes to #active" do
  get("/parties/active").should route_to("parties#active")
end
Run Code Online (Sandbox Code Playgroud)

否则它会像这样评估:

  get(("/parties/active").should route_to("parties#active"))
Run Code Online (Sandbox Code Playgroud)