On Jul 24, 2008, at 11:49 PM, Matt Lins wrote:
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.
The first example passes because "should_receive" acts as a stub, too.
The second example fails, because in the second example there is no
stub for the count method. I'd suggest adding this line to
before(:each) (or to the start of each test case):
MyModel.stub!(:count).and_return 0
Scott
_______________________________________________
rspec-users mailing list
rspec-users@rubyforge.org
http://rubyforge.org/mailman/listinfo/rspec-users