Сбой проверки маршрута: NoMethodError: неопределенный метод `values ​​'для" / the / route ": String - PullRequest
4 голосов
/ 06 февраля 2012

Я получаю провальный тест, который мне очень трудно отлаживать.

Мой тестовый пример:

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

Полная ошибка вывода на: 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

Есть идеи, что происходит?

Ответы [ 2 ]

6 голосов
/ 06 февраля 2012

Вы помещаете пробел между 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"))
1 голос
/ 06 февраля 2012

Попробуйте использовать маршрут в хэш-стиле:

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