2012-03-22 8 views
6

मैं अपने रेल ऐप पर आरसीईसी के साथ कुछ सरल परीक्षण करने की कोशिश कर रहा हूं।परीक्षण करने के लिए रुपेक का उपयोग कर रेल ---> एक्शन व्यू :: मिसिंग टेम्पलेट:

यह कल्पना में कोड की कसौटी पर टुकड़ा है/नियंत्रक/movies_controller_spec.rb

describe MoviesController do 
    describe 'update' do               
     it 'should call the model method to look up the movie to update' do           
     Movie.should_receive(:find).with("3")   
     put :update, {:id => "3"}            
    end 
    end 

इस में नियंत्रक/movies_controller.rb नियंत्रक विधि है:

def update 
    Movie.find(params[:id]) 
end 

और मैं इस समस्या को मिलता है :

1) MoviesController update should call the model method to look up the movie to update Failure/Error: post :update, {:id => "3"} ActionView::MissingTemplate: Missing template movies/update, application/update with {:handlers=>[:erb, :builder, :coffee, :haml], :formats=>[:html], :locale=>[:en, :en]}. Searched in: * "#<RSpec::Rails::ViewRendering::EmptyTemplatePathSetDecorator:0xa65b300>" # ./spec/controllers/movies_controller_spec.rb:8:in `block (3 levels) in <top (required)>' 

मेरे मार्गों की तरह लग रहे:

movies GET /movies(.:format)   {:action=>"index", :controller=>"movies"} 
      POST /movies(.:format)   {:action=>"create", :controller=>"movies"} 
new_movie GET /movies/new(.:format)  {:action=>"new", :controller=>"movies"} 
edit_movie GET /movies/:id/edit(.:format) {:action=>"edit", :controller=>"movies"} 
    movie GET /movies/:id(.:format)  {:action=>"show", :controller=>"movies"} 
      PUT /movies/:id(.:format)  {:action=>"update", :controller=>"movies"} 
      DELETE /movies/:id(.:format)  {:action=>"destroy", :controller=>"movies"} 

क्या कोई मेरी मदद कर सकता है और मुझे बता सकता है कि मैं इस तरह के सरल उदाहरण में क्या गलत कर रहा हूं?

+0

तो यह फिल्में देखने के लिए कोशिश नहीं करता/ – Bijan

+0

अद्यतन एक में एक ऐसी ही समस्या समझे अद्यतन के अंत में एक redirect_to movie_path में डालने की कोशिश करो प्रोजेक्ट, सबसे बुरा हिस्सा यह है कि यह एक spec फ़ाइल पर rspec को कॉल करते समय दिखाई नहीं देता है! –

उत्तर

9

the doc के अनुसार, जब आप views are stubbed by default से अपने नियंत्रक का परीक्षण करते हैं तो टेम्पलेट मौजूद होना चाहिए।

तो आपका नियंत्रक साफ़ हो सकता है, लेकिन प्रतिपादन फ़ाइल मौजूद होनी चाहिए (भले ही यह संकलित न हो)।

-1

चूंकि आपके पास अपनी अपडेट कार्रवाई में रीडायरेक्ट नहीं है, इसलिए रेलवे प्रस्तुत करने के लिए डिफ़ॉल्ट सम्मेलन का उपयोग करने जा रही है, इसलिए यह 'ऐप/व्यू/मूवीज़/अपडेट.html.एआरबी' का प्रयास करने और उपयोग करने जा रहा है। उस दृश्य को प्रस्तुत करें जो आपके पास नहीं है। आम तौर पर एक अद्यतन के बाद आप एक शो प्रकार दृश्य पर रीडायरेक्ट करना चाहते हैं। की जाँच करें एक विशिष्ट अद्यतन कार्रवाई यहाँ कैसा दिखता है:

http://guides.rubyonrails.org/getting_started.html#editing-posts