<html><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><br><div><div>On Jul 24, 2008, at 11:49 PM, Matt Lins wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><div dir="ltr">Hi all,<br><br>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:<br><br><a href="http://rspec.lighthouseapp.com/projects/5645/tickets/478-mocks-on-constants#ticket-478-6">http://rspec.lighthouseapp.com/projects/5645/tickets/478-mocks-on-constants#ticket-478-6</a><br> <br>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:<br><br><a href="http://gist.github.com/2372">http://gist.github.com/2372</a><br> <br>This is a snip of a some code from a library I'm writing. When I run this spec I get the following:<br><br># spec migration_spec.rb <br>.F<br><br>1)<br>Spec::Mocks::MockExpectationError in 'Migration should find the records'<br> Mock 'MyModel Class' received unexpected message :count with (no args)<br>./migration.rb:14:in `run'<br>./migration_spec.rb:19:<br><br>Finished in 0.009164 seconds<br><br>2 examples, 1 failure<br><br>------------------------------------------<br> <br>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.<br> <br>So, even though MyModel.count is stubbed in the before block, the mock reports an unexpected message. Note however the first example passes. </div></blockquote><div><br></div><div>The first example passes because "should_receive" acts as a stub, too. </div><div><br></div><div>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):</div><div><br></div><div>MyModel.stub!(:count).and_return 0</div><div><br></div><div>Scott</div><div><br></div></div></body></html>