ActionController :: UrlGenerationError для разработки контроллера регистрации - PullRequest
0 голосов
/ 21 ноября 2018

Я сталкиваюсь с интересным ActionController::UrlGenerationError во время тестирования моего пользовательского устройства User::RegistrationsController

Вот ошибка:

 ActionController::UrlGenerationError:
   No route matches {:action=>"create", :controller=>"user/registrations", :user=>{:name=>"Adriane Koepp", :city=>"Nidiafurt", :address=>"14955 Cormier Viaduct", :country=>"Mozambique", :email=>"moshe@kozey.com", :phone_primary=>"(295) 491-0447 x9108", :phone_secondary=>"536.985.9499 x7264", :postal_code=>"93438-7448", :province=>"South Carolina", :password=>"MaH9R5G8XqB", :pets_attributes=>[{:name=>"Patches", :chip_number=>"149793073311890", :species=>"iusto"}]}}

Ошибка появляется во всех моих тестах для этогоконтроллер, но для простоты я перечислю только один тест для действия create:

it 'creates a new User' do
  expect do
    post :create, params: { user: valid_attributes }
  end.to change(User, :count).by(1)
end

routes.rb содержит:

devise_for :users, controllers: {
  registration: 'user/registration'
}

Я могу перейти к своей регистрациисо страницей просто в http://localhost:3000/users/sign_up, но по некоторым причинам мои тесты, кажется, не думают, что у этого контроллера есть действительный URL для действия create.Почему так?

Дополнительные шаги

Следуя совету D1ceWard, я установил множественную «регистрацию» в своих маршрутах, и теперь сообщение об ошибке сменилось на ошибку AbstractController::ActionNotFound.Я ответил на это, следуя документации и добавил следующий блок в начало моих тестов:

before(:each) do
  @request.env['devise.mapping'] = Devise.mappings[:user]
end

1 Ответ

0 голосов
/ 21 ноября 2018

Ваша ошибка вызвана отсутствием множественного числа, devise не знаю, что такое registration, но работает с registrations.

Решение:

# routes.rb
devise_for :users, controllers: {
  registrations: 'user/registrations'
}

Вы можетеиспользуйте rails routes для проверки всех существующих маршрутов.

Разработка документа о пользовательских контроллерах

...