On Feb 14, 11:31 am, Fearless Fool <li...@ruby-forum.com> wrote: > I have a Premise model with an after_create method, along the lines of: > > class Premise < ActiveRecord::Base > ... > after_create :etl_attributes > ... > end > > In production code, etl_attributes accesses the web. For testing I'm > using WebMock and VCR in cases where I want to test the etl_attributes > function -- works like a champ. > > For all other tests, I want to create a real Premise object (I need it > for HABTM associations), but I want to stub out the call to > etl_attributes. My problem is that I haven't figured out the right way > to do so. The following DOESN'T work (it should be clear that I'm using > FactoryGirl as well): > > mock_model(Premise) > Premise.stub!(:etl_attributes) > @premise = Factory.create(:premise) > > ... this still calls etl_attributes and WebMock gets appropriately mad. > > What am I missing? > > - ff > > -- > Posted viahttp://www.ruby-forum.com/. > _______________________________________________ > rspec-users mailing list > rspec-us...@rubyforge.orghttp://rubyforge.org/mailman/listinfo/rspec-users
etl_attributes is an instance method, not a class method. So, you want to stub the method on the Premise instance. Since you're using rspec- mocks, I would recommend something like this: @premise = Factory.build(:premise) @premise.stub(:etl_attributes) @premise.save! For more info using pure mock objects, checkout these pages: http://relishapp.com/rspec/rspec-rails/v/2-5/dir/mocks/mock-model http://relishapp.com/rspec/rspec-rails/v/2-5/dir/mocks/stub-model _______________________________________________ rspec-users mailing list rspec-users@rubyforge.org http://rubyforge.org/mailman/listinfo/rspec-users