我試圖在一個非足智多謀的路由的RSpec測試中將ID傳遞給get方法,並且我得到一個參數錯誤。傳遞RSpec的參數錯誤獲取方法的一個參數
這裏的測試:在MoviesController
describe MoviesController do
describe "search directors" do
it 'calls the model method that find similar movies' do
movie1 = Movie.create(:title => "Star Wars1", :director => "George", :rating => "R")
movie2 = Movie.create(:title => "Star Wars2", :director => "George", :rating => "R")
get :search_directors, {:id => 1}
end
end
end
search_directions行動:
def search_directors
@movie = Movie.find(params[:id])
@movies = Movie.similar_movies(@movie)
end
這裏是我的路線:
Rottenpotatoes::Application.routes.draw do
resources :movies
root :to => redirect('/movies')
get '/movies/search_directors/:id', to:'movies#search_directors'
end
電影模式(movie.rb)
class Movie < ActiveRecord::Base
def self.all_ratings
%w(G PG PG-13 NC-17 R)
end
def self.similar_movies
Movie.where(director: self.director)
end
end
和錯誤:
Failure/Error: get 'search_directors', {:id => 1}
ArgumentError:
wrong number of arguments (given 1, expected 0)
# ./app/models/movie.rb:5:in `similar_movies'
# ./app/controllers/movies_controller.rb:66:in `search_directors'
# /usr/local/rvm/gems/ruby-2.3.0/gems/actionpack-4.2.6/lib/action_controller/metal/implicit_render.rb:4:in `send_action'
# /usr/local/rvm/gems/ruby-2.3.0/gems/actionpack-4.2.6/lib/abstract_controller/base.rb:198:in `process_action'
# /usr/local/rvm/gems/ruby-2.3.0/gems/actionpack-4.2.6/lib/action_controller/metal/rendering.rb:10:in `process_action'
# /usr/local/rvm/gems/ruby-2.3.0/gems/actionpack-4.2.6/lib/abstract_controller/callbacks.rb:20:in `block in process_action'
你確定錯誤不在你的'search_directors'方法中嗎?您能否包含錯誤附帶的完整跟蹤? – SteveTurczyn
你說得對,它是search_directors發生錯誤的地方,我更新了帖子以反映這一點。 – m3funkyb
太好了,你可以發佈你的movie.rb嗎?第5行是問題。 – SteveTurczyn