2011-11-01 57 views
10

utworzyć kontroler z InherritedResourceJak przetestować kontrolery z zagnieżdżonych tras za pomocą rspec

class AppsController < InheritedResources::Base 
    belongs_to :company 

    # Devise 
    before_filter :login_or_oauth_required 
    # CanCan 
    load_and_authorize_resource 
end 

i spróbować przetestować go z rspec tą metodą

require "spec_helper" 

include Devise::TestHelpers 

describe AppsController do 
    before(:each) do 
    @company_1 = Factory.build(:company) 
    application_1 = Factory.create(:application, :company => @company_1) 
    application_2 = Factory.create(:application, :company => @company_1) 
    application_3 = Factory.create(:application, :company => @company_1)  
    @company_2 = Factory.build(:company) 

    @user_1 = Factory.create(:user) 
    role_1 = Factory.create(:publisher_role, :company => @company_1) 
    profile_1 = Factory.create(:profile, :company => @company_1, :user => @user_1, :roles => [role_1]) 
    end 

    describe "index action" do 
    it "user_1 should have 3 applications from company_1" do 
     sign_in @user_1 
     params = {"company_id"=>"1"} 
     get :index 
     assigns[:apps].should have(3).items 
    end 
    end 
end 

Rezultatem jest

Failure/Error: get :index 
    ActionController::RoutingError: 
     No route matches {:controller=>"apps"} 

Jak przekazać Rspec do "Get" w mojej zagnieżdżonej trasie

Moje trasy

resources :companies do 
    resources :apps do 
     resources :shelves do 
     resources :publications 
     end 
    end 
    end 

staram się śledzić to pytanie How to test controllers with nested routes using Rspec? ale to nie działa w moim przypadku

używam Rails 3.1.1 i rspac 2,7

+1

FWIW, szyn Przewodniki zniechęcić gniazdowania zasobów poza jednym poziomie „Zasoby nigdy nie powinny być zagnieżdżone głęboko więcej niż 1 poziom” (http://guides.rubyonrails.org/routing.html#nested-resources) odsyłając czytelników do tego [monstrum] (http://weblog.jamisbuck.org/2007/2/5/nesting-resources). Ale musisz to robić. – brntsllvn

Odpowiedz

39

znalazłem rozwiązanie :-P

To, co zrobiłem, to zmienić z

get :index 

do

get :index, :company_id => @company_1.id 
+0

Lub w nowej składni rspec 'get: index, params: {company_id: @ company_1.id} –

Powiązane problemy