[rspec-users] newbie: how to preserve NoMethodError under stubbing?

Lille lille.penguini at gmail.com
Sat Jul 24 09:34:01 EDT 2010


David,

Yes, your reading of the request is what I originally meant.

I appreciate the points made by others in this thread and the thread
David has referred to.

As I continue to learn RSpec I will undoubtedly avail myself of the
approaches recommended above or in the linked thread, but I think an
argument to stub() per the following could be useful:

f.stub(:barr, :throw_no_such_method_error=>true)
#=> Error: "The Foo class does not have a 'barr' method. Perhaps you
meant to stub 'bar'"

Thanks,

Lille

On Jul 24, 7:15 am, David Chelimsky <dchelim... at gmail.com> wrote:
> On Jul 24, 2010, at 4:35 AM, Wincent Colaiuta wrote:
>
>
>
>
>
> > El 24/07/2010, a las 08:26, David Chelimsky escribió:
>
> >> On Fri, Jul 23, 2010 at 6:46 PM, Lille <lille.pengu... at gmail.com> wrote:
> >>> Hi,
>
> >>> I've been browsing the RSpec book and the RDoc, but I can't see how to
> >>> ensure the following:
>
> >>> Stub an instance with a method it doesn't have and raise NoMethodError
> >>> (or something like it.)
>
> >> RSpec doesn't support anything like that. I'm not sure if any of the
> >> Ruby frameworks do, though I've been involved with conversations about
> >> this sort of thing before.
>
> > I'm not sure if I understand the request, but with RR you can do this:
>
> >>> require 'rr'
> > => true
> >>> extend RR::Adapters::RRMethods
> > => main
> >>> foo = Object.new
> > => #<Object:0x101664bd8>
> >>> stub(foo).bar { raise NoMethodError }
> > => #<RR::DoubleDefinitions::DoubleDefinition:0x10165ce60>
> >>> foo.bar
> > NoMethodError: NoMethodError
>
> > Although like I said, not sure if I understood Lille's request.
>
> I read the request as this:
>
> class Foo
>   def bar; end
> end
>
> f = Foo.new
> f.stub(:barr)
> #=> Error: "The Foo class does not have a 'barr' method. Perhaps you meant to stub 'bar'"
>
> For me this would have very limited utility because 1/2 the time I'm deliberately stubbing methods that don't even exist yet on doubles doubling for objects that don't even exist yet, which is why I wouldn't want it to be something that happens implicitly by default.
>
> Here's another thread on the same matter from a little over a year ago:
>
> http://groups.google.com/group/rspec/browse_thread/thread/cf0b3eae192...
>
> Cheers,
> David
>
>
>
> > Cheers,
> > Wincent
>
> _______________________________________________
> rspec-users mailing list
> rspec-us... at rubyforge.orghttp://rubyforge.org/mailman/listinfo/rspec-users


More information about the rspec-users mailing list