Dies ist die .spec Datei:RAILS & RSpec: erwartet < "similar_movies"> aber Rendering mit <[]>
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
Dies ist die Controller-Aktion:
# 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
Dies ist das Modell-Methode:
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
Und Die Vorlage:
[email protected]_movies_arr.each do |movie|
%h1= movie.title
Es ist sehr einfach, meine ersten Schritte mit RSpec, aber es schlägt fehl. Bitte, kann mir jemand helfen, diesen Fehler zu verstehen
Dank erwarten lassen ein Menge. Es funktionierte, indem Sie nur die Zeile "get ..." verschoben haben, aber auch Ihren anderen Ratschlägen folgen. – siderio2