rspecを使用していますが、いくつか問題があります。rspecで次のエラーが発生します
1) MoviesController find movies with same director should call the model method that searches for movie by director
Failure/Error: get :samedirector, {:id => 1}
RuntimeError:
Called id for nil, which would mistakenly be 4 -- if you really wanted the id of nil, use object_id
# ./app/controllers/movies_controller.rb:63:in `samedirector'
# ./spec/controllers/movies_controller_spec.rb:11:in `block (3 levels) in <top (required)>'
これは私のmovies_controller_spec.rbです
describe MoviesController do
describe 'find movies with same director' do
let(:movie) { Movie.create }
before {movie.id=1, movie.director = "Steven S", movie.title="Hello World"}
subject { movie }
it 'should call the model method that searches for movie by director' do
Movie.should_receive(:find).with("1")
#this get is passing a nil id
get :samedirector, {:id => movie.id}
end
end
end
これは私のMovieController.rbです
def samedirector
movie = Movie.find(params[:id])
@director = movie.director
end
どんな助けでもいただければ幸いです。これは宿題の問題なので、ソリューションコードよりも直感的に理解して、間違っている可能性のある行を指摘していただければ、非常に役立ちます。
アップデート
私はあなたが言ったことに基づいてそれを修正し、ちょうどそれを初期化しました
before (:each) do
@movie = Movie.create(:director => "Steven S", :title=>"Hello World")
end
しかし、私は今、次の問題を抱えています。監督がコントローラーのスティーブンSであることを認識していないようです。理由はわかりません。