[rspec-users] Problems with mock assigned to a constant

Matt Lins mattlins at gmail.com
Thu Jul 24 23:49:45 EDT 2008


Hi all,

Initially I thought this was a bug in the built-in mocking framework(and it
still may be), but I better hash it out on the mailing list before I
file/reopen the ticket:

http://rspec.lighthouseapp.com/projects/5645/tickets/478-mocks-on-constants#ticket-478-6

I thought my example illustrated my problem, but obviously I was passing the
wrong arguments to the mock.  I revised my example to more clearly state my
problem:

http://gist.github.com/2372

This is a snip of a some code from a library I'm writing.  When I run this
spec I get the following:

# spec migration_spec.rb
.F

1)
Spec::Mocks::MockExpectationError in 'Migration should find the records'
Mock 'MyModel Class' received unexpected message :count with (no args)
./migration.rb:14:in `run'
./migration_spec.rb:19:

Finished in 0.009164 seconds

2 examples, 1 failure

------------------------------------------

I want to mock out MyModel completely because it's an ActiveRecord object.
As suggested, if I define the MyModel class, this whole spec will pass.
But, I don't think I should need to do that, should I?  So it seems to only
occur when I assign the mock to a constant.

So, even though MyModel.count is stubbed in the before block, the mock
reports an unexpected message.  Note however the first example passes.

I had difficulty figuring out the cause of this, so I just gave FlexMock a
shot (since it's so easy to swap out).  FlexMock passed both examples(not
that, that alone signifies a bug in rSpec).

So, my question: Is this a bug in the built in mocking framework, or am I
doing it wrong? :)

-Matt
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://rubyforge.org/pipermail/rspec-users/attachments/20080724/d86279d4/attachment-0001.html>


More information about the rspec-users mailing list