2011-11-01 1 views
10

मैं InherritedResourceकैसे का उपयोग कर नेस्टेड मार्गों के साथ नियंत्रकों का परीक्षण rspec

class AppsController < InheritedResources::Base 
    belongs_to :company 

    # Devise 
    before_filter :login_or_oauth_required 
    # CanCan 
    load_and_authorize_resource 
end 

साथ नियंत्रक बना सकते हैं और इस विधि द्वारा Rspec के साथ यह परीक्षण करने के लिए प्रयास करने के लिए

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 

परिणाम

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

मेरे नेस्टेड मार्ग में "प्राप्त करें" के लिए रुपेक को कैसे बताना है

मेरे मार्गों

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

मैं इस प्रश्न How to test controllers with nested routes using Rspec? पालन करने की कोशिश, लेकिन यह मेरे मामले

मैं का उपयोग रेल 3.1.1 और rspac 2.7

+1

fwiw करने, रेल गाइड एक स्तर से परे नेस्टिंग संसाधनों को हतोत्साहित "संसाधन कभी नहीं नेस्ट किया जाना चाहिए 1 से अधिक स्तर गहरी," (http://guides.rubyonrails.org/routing.html#nested-resources) पाठकों को इस [monstrosity] (http://weblog.jamisbuck.org/2007/2/5/nesting-resources) को संदर्भित करता है। लेकिन क्या आपको देखना होगा। – brntsllvn

उत्तर

39

मैं समाधान पर काम नहीं कर रहा है :-P

मैं क्या

get :index 
से बदलने के लिए सिर्फ था

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

या नए आरएसपीसी वाक्यविन्यास में 'प्राप्त करें: अनुक्रमणिका, पैराम्स: {company_id: @ company_1.id} ' –