Я получаю эту ошибку:
Неудачи:
1) UsersController DELETE 'destroy' должен выйти из системы
Failure/Error: delete :destroy ActionController::UrlGenerationError: No route matches {:controller=>"users", :action=>"destroy"}
Мой тест:
it "should sign a user out" do test_sign_in(Factory(:user)) delete :destroy expect(controller).to_not be_signed_in expect(response).to redirect_to(root_path) end
Функция test_sign_in находится в помощнике спецификации:
защита test_sign_in (пользователь)
controller.sign_in(user)
конец
Мои рейк-маршруты:
Prefix Verb URI Pattern Controller#Action
sessions_new GET /sessions/new(.:format) sessions#new
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
user GET /users/:id(.:format) users#show
PATCH /users/:id(.:format) users#update
PUT /users/:id(.:format) users#update
DELETE /users/:id(.:format) users#destroy
sessions POST /sessions(.:format) sessions#create
new_session GET /sessions/new(.:format) sessions#new
session DELETE /sessions/:id(.:format) sessions#destroy
root GET / pages#home
contact GET /contact(.:format) pages#contact
about GET /about(.:format) pages#about
help GET /help(.:format) pages#help
signup GET /signup(.:format) users#new
signin GET /signin(.:format) sessions#new
signout GET /signout(.:format) sessions#destroy
pages_home GET /pages/home(.:format) pages#home
Кто-нибудь знает, как я могу решить эту ошибку?
get :signout
в этом случае. Ошибка Действие «уничтожить» не может быть найдено для UsersController означает, что внутри вашегоUsersController
нет действия дляdestroy
. Хотя в этом есть смысл, верно? Поскольку ваше действиеdestroy
находится внутриSessionsController
, вам следует протестировать функцию выхода в спецификации дляSessionsController
, а неUsersController
. Надеюсь, это поможет! 21.03.2014