[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)

For more info using pure mock objects, checkout these pages:


More information about the rspec-users mailing list