Как решить проблему с тестами Rspec и путями (routes)?

Вот мой кусок routes.rb:
resources :users
match '/signup',  to: 'users#new',            via: 'get'

Прохождение простенького теста выдает ошибку:
Failure/Error: before { visit signup_path }
     ActionView::Template::Error:
      <b> arguments passed to url_for can't be handled. Please require routes or provide your own implementation</b>

Какая то проблема с определение путей, команда rake routes выдает:
Prefix Verb          URI Pattern               Controller#Action
users GET          /users(.:format)          users#index
 POST           /users(.:format)          users#create
new_user GET      /users/new(.:format)      users#new
edit_user GET       /users/:id/edit(.:format) users#edit
...
signup GET    /signup(.:format)         users#new

Как я понял, происходит конфликт путей (users#new). Хотя при аналогичном методе в Rails Tutorial'е проходили тесты.

Что не так, как жить?
Заранее, спасибо
  • Вопрос задан
  • 2600 просмотров
Пригласить эксперта
Ответы на вопрос 2
Freika
@Freika
Senior Ruby on Rails developer
Не уверен, что это решит проблему, но вообще в Rails 4 match считается deprecated. Используйте
get '/signup', to: "controller#action"
Ответ написан
@proffard
Ошибка связана не с роутами, а с тем, что в тестах не подключен модуль, который знает названия именных роутов.

Попробуйте в ваш тест добавить строчку
include Rails.application.routes.url_helpers

если поможет, то решите проблему глобально, добавив ее в spec_helper.rb
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы