On Jul 29, 2008, at 12:31 AM, Steve wrote:
Pat Maddox wrote:
etc. It's super weird that it works in every other place but not
here. So I'd start from the tiniest thing possible and add lines
until you find one that breaks it.
Pat
So I went through and took the whole thing apart. It turns out that
it is/was a stub issue(just not quite what expected). Prior to
calling the shared describe Reservation.find was stubbed to return
[]. I didn't realize that internally the fixtures collections used
find. Now that I do, it all makes sense; since it's just doing what
I told it to.
So in a way my original question still stands. Is there a way to
"unstub" something? Because I don't see a way around this unless I
can do that. Thanks for your help.
Of course there is a way - the question is, do you really want to use
it?
Here's how the test suite sets up stubs:
1. you say, stub object foo with method bar, returning baz
2. rspec aliases the original method, and then redefines it bar on foo
to return baz
3. your test case ends, and then rspec goes back, and re-aliases the
method to it's original definition.
So yes, you could call the un-stub'ed method (which I believe rspec
calls #proxied_by_rspec_#{method_name}), although I think it'll be
ugly and confusing. But, if you really want to override the
behaviour, I'd suggest defining something like this:
class Object
def original_stub(method_name, *args, &blk)
self.send("proxied_by_rspec_#{method_name}", *args, &blk)
end
end
But, I think the best result is just to duplicate the stub.
Scott
_______________________________________________
rspec-users mailing list
rspec-users@rubyforge.org
http://rubyforge.org/mailman/listinfo/rspec-users
_______________________________________________
rspec-users mailing list
rspec-users@rubyforge.org
http://rubyforge.org/mailman/listinfo/rspec-users