0
渲染这是的.spec文件:钢轨&RSpec的:期待< “similar_movies”>但<[]>
describe MoviesController do
describe 'similar_movies' do
before :each do
@fake_results = [double('movie1'), double('movie2')]
end
it 'should call the model method that searches similar movies' do
expect(Movie).to receive(:similar_movies).with("1").
and_return @fake_results
get :similar_movies, :id => 1
end
it 'should select the similar_movies template for rendering' do
Movie.stub(:similar_movies).and_return(@fake_results)
expect(response).to render_template(:similar_movies)
get :similar_movies, :id => 1
end
# it 'should make the similar_movies results avaliable to that template'do
# end
end
这是控制器动作:
# METHOD TO FIND MOVIES WITH THE SAME DIRECTOR AS A GIVEN ONE
def similar_movies
@similar_movies_arr = Movie.similar_movies(params[:id])
#render 'similar_movies'
end
这是模型的方法:
def self.similar_movies(id)
movie = Movie.find(id)
director = movie['director']
@similar_movies_arr = []
@similar_movies = Movie.where(["director = ?", "#{director}"])
@similar_movies.each do |m|
@similar_movies_arr << m
end
return @similar_movies_arr
end
而这个模板:
[email protected]_movies_arr.each do |movie|
%h1= movie.title
这很简单,我的第一步与RSpec,但它失败了。请,有人可以帮助我了解这个错误
MoviesController similar_movies should select the similar_movies template for rendering
Failure/Error: expect(response).to render_template(:similar_movies)
expecting <"similar_movies"> but rendering with <[]>
谢谢许多。它只是通过移动'get ...'来实现,但也会遵循你的其他建议。 – siderio2