0

私はただ理解できないこのエラーを受け取り続けます:

Failure/Error: get :find_movies, {:id => @id_passed }
 NoMethodError:
   undefined method `get' for #<RSpec::Core::ExampleGroup::Nested_1::Nested_1:0x0000000363f800>

次の rspec テストの場合:

it 'should find the movie in the database by the passed id' do
        Movie.should_receive(:find).with(@id_passed).and_return(@movie_found)
        get :find_movies, {:id => @id_passed }
end

次のルートを使用します。

get '/movies/find/:id' => 'movies#find', :as => :find_movies

そして私のコントローラーには以下が含まれます:

def find
  @movie = Movie.find params[:id]
  if @movie.director != ""
    @similar = Movie.where({:director => @movie.director}).all if @movie.director
  else
    flash[:warning] = "\'#{@movie.title}\' has no director info"
    redirect_to movies_path
  end
end

私の友人は、まったく同じコードを書き、それを機能させました。これが機能しない理由を理解するのを手伝ってくれる人はいますか? どうもありがとう!

4

1 に答える 1

5

rspecあなたの仕様がコントローラーの仕様であるとは思われないかもしれません。typeこのように記述に追加できます

describe YourController, :type => :controller do
...
end

もう1つの修正はrequire 'rspec/rails'、spec_helperに追加することです

「spec/features」を使用している場合は、「spec_helper.rb」に以下を追加する必要がある場合があります

config.include RSpec::Rails::RequestExampleGroup, type: :feature

詳細については、この回答を参照してください: #<RSpec::Core::ExampleGroup::Nested_1:0x00000106db51f8> の未定義メソッド `get'

于 2013-04-26T06:56:31.153 に答える