Non sono nuovo di Rails o di Rspec, ma sono nuovo nel creare gemme. Quando provo i miei controller, i metodi REST "get", "post", "put", "delete" mi danno un errore del metodo non definito.Perché i metodi di RSpec, "get", "post", "put", "delete" funzionano in una specifica del controller in una gemma (o all'esterno di Rails)?
Sotto troverai il codice, ma se preferisci vederlo in un pastie, click here.
Grazie!
Ecco la mia 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
mio 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
mie opzioni di controllo:
class SubscriptionsController < ActionController::Base
def index
end
end
L'errore:
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:
Grazie Damien. Questa è la risposta che stavo cercando. :) –
dove e come "ridefinirli"? – botbot
Un metodo è un metodo. Quindi dovresti essere in grado di ridefinirlo in qualsiasi modulo e includerlo nelle tue specifiche –