Je ne suis pas nouveau à Rails ou Rspec, mais je suis nouveau à faire des gemmes. Lorsque je teste mes contrôleurs, les méthodes REST "get", "post", "put", "delete" me donnent une erreur de méthode non définie.Pourquoi les méthodes RSpec, "get", "post", "put", "delete" ne fonctionnent pas dans une spécification de contrôleur dans une gemme (ou en dehors de Rails)?
Ci-dessous vous trouverez le code, mais si vous préférez le voir dans un pâté, click here.
Merci!
Voici mon spec_helper:
$LOAD_PATH.unshift(File.dirname(__FILE__))
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
require 'rubygems'
require 'active_support' unless defined? ActiveSupport # Need this so that mattr_accessor will work in Subscriber module
require 'active_record/acts/subscribable'
require 'active_record/acts/subscriber'
require 'action_view'
require 'action_controller' # Since we'll be testing subscriptions controller
#require 'action_controller/test_process'
require 'spec'
require 'spec/autorun'
# Need active_support to user mattr_accessor in Subscriber module, and to set the following inflection
ActiveSupport::Inflector.inflections do |inflect|
inflect.irregular 'dorkus', 'dorkuses'
end
require 'active_record' # Since we'll be testing a User model which will be available in the app
# Tell active record to load the subscribable files
ActiveRecord::Base.send(:include, ActiveRecord::Acts::Subscribable)
ActiveRecord::Base.send(:include, ActiveRecord::Acts::Subscriber)
require 'app/models/user' # The user model we expect in the application
require 'app/models/person'
require 'app/models/subscription'
require 'app/models/dorkus'
require 'app/controllers/subscriptions_controller' # The controller we're testing
#... more but I think irrelevant
Mon subscriptions_spec:
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
describe SubscriptionsController, "on GET index" do
load_schema
describe ", when only subscribable params are passed" do
it "should list all the subscriptions of the subscribable object"
end
describe ", when only subscriber params are passed" do
it "should list all the subscriptions of the subscriber" do
u = User.create
d1 = Dorkus.create
d2 = Dorkus.create
d1.subscribe! u
d2.subscribe! u
get :index, {:subscriber_type => "User", :subscriber_id => u.id}
assigns[:subscriptions].should == u.subscriptions
end
end
end
Mon contrôleur d'abonnements:
class SubscriptionsController < ActionController::Base
def index
end
end
L'erreur:
NoMethodError in 'SubscriptionsController on GET index , when only subscriber params are passed should list all the subscriptions of the subscriber'
undefined method `get' for #
/home/ramon/rails/acts_as_subscribable/spec/controllers/subscriptions_controller_spec.rb:21:
Merci Damien. C'est la réponse que je cherchais. :) –
où et comment les "redéfinissez-vous"? – botbot
Une méthode est une méthode. Vous devriez donc pouvoir le redéfinir dans n'importe quel module et l'inclure dans vos spécifications –