[rspec-users] stubbing out after_create AR method?
Justin Ko
jko170 at gmail.com
Mon Feb 14 14:53:22 EST 2011
On Feb 14, 11:31 am, Fearless Fool <li... at 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... at 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
More information about the rspec-users
mailing list