Я прочитал много других вопросов здесь, в SO, но никто не смог решить мою проблему (все они оказались связанными параметрами). Я надеюсь, что кто-то может мне помочь.Rails4 - Тестирование - URLGenerationError: Нет совпадений маршрутов
Выполнение теста моего контроллера я получаю сообщение:
ActionController::UrlGenerationError: No route matches
{:action=>"/login", :controller=>"sessions"}
test/controllers/sessions_controller_test.rb:6:in `block in
<class:SessionsControllerTest>'
Мои rake routes
выглядит следующим образом:
Prefix Verb URI Pattern Controller#Action
login GET /login(.:format) sessions#new
POST /login(.:format) sessions#create
logout DELETE /logout(.:format) sessions#destroy
Моего сам тест является этим:
test "should get new" do
puts 'debug: ' + login_path
get login_path
assert_response :success
end
ставит отладку линейные отпечатки: debug: /login
Когда я иду в localhost:3000/login
в веб-браузере загружает страницу правильно и отладочная информация ВОФК, что он использовал:
controller: sessions
action: new
Любая идея, почему тест не правильно перенаправлены на new
действия и вместо этого ищет для несущественного действия /login
? Благодаря!
EDIT: решение
После ответов ниже я нашел эту ссылку, объясняющую весь вопрос:
http://blog.bigbinary.com/2016/04/19/changes-to-test-controllers-in-rails-5.html
На Rails4 (который я использую) тесты контроллеров используют ActionController::TestCase
где get :new
сусло вместо get login_url
(что хорошо для интеграционных тестов).
Почему вы используете 'get login_path' вместо' get: new'? – ArtOfCode
Просто следуйте https://www.railstutorial.org/book/basic_login Пробовал свой код и работал. Благодаря! –
Интересно, будет ли он работать с учебным стилем. –