使用Rspec测试的Rails ---> ActionView :: MissingTemplate:

use*_*663 6 tdd rspec ruby-on-rails ruby-on-rails-3

我试图在我的Rails应用程序上使用Rsec测试一些非常简单的东西.

这是spec/controllers/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
Run Code Online (Sandbox Code Playgroud)

这是controllers/movies_controller.rb中的控制器方法:

def update
   Movie.find(params[:id])
end
Run Code Online (Sandbox Code Playgroud)

我遇到了这个问题:

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)>'
Run Code Online (Sandbox Code Playgroud)

我的路线看起来像:

    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"}
Run Code Online (Sandbox Code Playgroud)

谁能帮助我,告诉我在这么简单的例子中我到底做错了什么?

apn*_*ing 9

根据文档,模板必须在您测试控制器时存在views are stubbed by default.

所以你的控制器可能是干净的,但渲染文件必须存在(即使它没有编译).