Most Ruby mocking frameworks have the ability to mock a new object created via a constructor. However, when an object is created via ActiveRecord’s find or find_by_* methods, the .new method isn’t invoked. Instead, the .instantiate method is called.
For example, to specify :instantiate as the object creation method using FlexMock:
flexmock(Dog).new_instances(:instantiate) .should_receive(:bark) .at_least.once .and_return(:woof)
Leave a Reply