On Thu, Jan 20, 2011 at 4:33 PM, Joshua Partogi <[email protected]> wrote:
> Can anyone explain what are the cases when to use fixtures/factory
> girl over mock framework? Or can we use mock framework without the
> need to use fixtures/factory girl these days?

Hi Joshua,

I use both fixtures and mocks/stubs for testing in my apps. Fixtures
created with Machinist or Factory Girl are very useful for writing
specs or test cases for creating instances of the class under test, we
don't want to stub or mock stuff in the class under test too much,
otherwise we're not really testing it.

When we're mocking or stubbing we are assuming that the methods or
classes we're stubbing already work and well tested.

I'll try to illustrate it with some code below.

class Robot
  def pick_object(o)
  end
end

# rspec
describe Robot do
  it "picks up object" do
    # robot here is a real instance of Robot, so we can test the
actual behaviour of Robot instead of assuming anything
    robot = Robot.make    # I'm using Machinist here
    # While mock_object here can be mocked because it's not the class
under test, and we can assume
    # that it's already working and well tested.
    mock_object = mock("some object")
    # When we call the following, the code in the Robot#pick_object
method will actually be executed.
    robot.pick_object(mock_object).should ...
    # But if we had robot = mock(Robot, :pick_object => true) above,
then we're assuming that Robot already works
    # (which doesn't make sense since we're testing it here) and any
call to pick_object would do nothing
    # (the code in Robot#pick_object would not be executed)
    # and always returns true
  end
end

So it's still handy to be able to use both mocks/stubs and fixtures in
the above.

Hope that helps.

Ronny

-- 
You received this message because you are subscribed to the Google Groups "Ruby 
or Rails Oceania" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/rails-oceania?hl=en.

Reply via email to