2012-02-05 57 views
4

我遇到了一个失败的测试,我很难调试。路由测试失败:NoMethodError:“/ the/route”的未定义方法`值':字符串

我的测试情况是:

it "routes to #active" do 
    get ("/parties/active").should route_to("parties#active") 
end 

我的路线是:

resources :parties do 
    get 'active', :on => :collection 
end 

当我运行测试时,我得到以下错误:

NoMethodError: undefined method `values' for "/parties/active":String 

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

当我运行耙路线,我看到:

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 

我运行该测试是几乎相同的测试脚手架产生新:

it "routes to #new" do 
    get("/parties/new").should route_to("parties#new") 
end 

任何想法是怎么回事?

+0

我正在使用Rails 3.2.1。 – 2012-02-06 08:15:41

+0

我还发现在'before'块中使用'get'会导致同样的错误。 – 2014-09-30 03:02:01

回答

5

你在get和方法的参数之间加一个空格。不要这样做。

你有这样的:

it "routes to #active" do 
    get ("/parties/active").should route_to("parties#active") 
end 

当它应该是这样的:

it "routes to #active" do 
    get("/parties/active").should route_to("parties#active") 
end 

否则它会评价是这样的:

get(("/parties/active").should route_to("parties#active")) 
+0

谢谢瑞安,修好了。 – 2012-02-06 05:50:55

1

尝试使用哈希风格路线:

{ :get => 'parties/new' }.should route_to('parties#new') 
+0

布兰登,你的解决方案的作品。 :-)如果你对我的代码失败的原因感兴趣,那是因为get和左括号之间的空格,正如Ryan Bigg在上面指出的那样。 – 2012-02-06 05:49:31

相关问题