Учебник по Ruby on Rails, глава 11, упражнение 7 - ломает мои тесты rspec - PullRequest
1 голос
/ 30 января 2011

Я работаю над превосходным учебником Майкла Хартла по Rails, но у меня возникли проблемы с упражнением 7 в главе 11.

Это упражнение:

Добавление вложенного маршрутатак что / users / 1 / microposts показывает все микросообщения для пользователя 1. (Вам также необходимо добавить действие индекса контроллера Microposts и соответствующее представление.)

Я успешно сделал это, изменивМой routes.rb файл для чтения:

resources :users do
  resources :microposts, :only => [:create, :destroy]
end

Я могу успешно звонить / users / 1 / microposts из браузера.Однако большинство тестов в microposts_controller_spec.rb теперь не работают.Я получаю сообщение об ошибке «Нет совпадений маршрутов» при запуске автотеста.Например, первый тест, который просто читает:

it "should deny access to 'create'" do
  post :create
  response.should redirect_to(signin_path)
end

теперь выдает следующую ошибку:

1) Контроль доступа MicropostsController должен запретить доступ к «create» Failure / Error: post: create Маршруты не совпадают:

user_microposts POST   /users/:user_id/microposts(.:format)     {:action=>"create", :controller=>"microposts"}

, который предполагает, что маршрут действительно существует.

Кто-нибудь еще сталкивался с этой проблемой при завершении учебника?Нужно ли вносить изменения в файл спецификаций после того, как я ввел вложенные маршруты?Работает ли Rspec с вложенными маршрутами?

спасибо

1 Ответ

2 голосов
/ 31 января 2011

Поскольку это вложенный маршрут, вам нужно будет пройти через user_id через:

some_user = way_of_creating_a_user_goes_here
post :create, :user_id => some_user.id

RSpec попытается перейти на маршрут /microposts без этого параметра.

...