Тестирование вложенных ресурсов с помощью RSpec - PullRequest
5 голосов
/ 19 сентября 2011

Я пытаюсь создать тесты для вложенных ресурсов в Rails. Соответствующее определение маршрута:

resources :communities do
  resources :contents, :type => 'Content'
end

Используя RSpec и factory_girl, я пытаюсь начать тестирование, например, с

describe ContentsController do
  it 'should display a content item under a community' do
    content = FactoryGirl.create(:content)
    get :show, :community_id => content.community.id, :id => content.id
  end
end

Эти запросы всегда приводят к

Failure/Error: get :show, :community_id => content.community.id, :id => content.id
 ActionController::RoutingError:
   No route matches {:community_id=>BSON::ObjectId('4e7773c6ac54c3d1ad000002'),
   :id=>BSON::ObjectId('4e7773c6ac54c3d1ad000001'), :controller=>"contents",
   :action=>"show"}

Из-за жизни я не могу найти способ указать маршрут к вложенному ресурсу с помощью RSpec. Я делаю что-то в корне не так?

Обновление: соответствующая часть рейковых маршрутов:

    community_contents GET    /communities/:community_id/contents(.:format)             {:action=>"index", :controller=>"contents"}
                       POST   /communities/:community_id/contents(.:format)             {:action=>"create", :controller=>"contents"}
 new_community_content GET    /communities/:community_id/contents/new(.:format)         {:action=>"new", :controller=>"contents"}
edit_community_content GET    /communities/:community_id/contents/:id/edit(.:format)    {:action=>"edit", :controller=>"contents"}
     community_content GET    /communities/:community_id/contents/:id(.:format)         {:action=>"show", :controller=>"contents"}
                       PUT    /communities/:community_id/contents/:id(.:format)         {:action=>"update", :controller=>"contents"}
                       DELETE /communities/:community_id/contents/:id(.:format)         {:action=>"destroy", :controller=>"contents"}

1 Ответ

3 голосов
/ 02 января 2012

Я вижу, что вы передаете content.community.id как:Попробуйте вместо этого использовать to_param:

get :show, :community_id => content.community.to_param, :id => content.to_param
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...