这是.spec文件:
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这是model方法:
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这就是模板:
-@similar_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 <[]>https://stackoverflow.com/questions/38445066
复制相似问题