'Expected NoMethodError, got NameError'

Given this simple cucumber feature (related to another rspec bug I am
working on):

stubs_dont_leak.feature · GitHub

I’m fighting with this error messages that only shows up in certain
situations that I can’t quite pin down (rake features breaks, individual
cucumber run works, rake with debugger beforehand works…)

expected NoMethodError, got #<NameError: undefined local variable or method nap' for Time:Class ./features/step_definitions/stubs_dont_leak_steps.rb:10:in /^nap time should not be defined$/’
features/either/stubs_dont_leak.feature:11:in `Then nap time should not be defined’

I’ve tracked it down to this line:

def message_received(sym, *args, &block)
expectation = find_matching_expectation(sym, *args)
stub = find_matching_method_stub(sym, *args)

if (stub && expectation && expectation.called_max_times?) || (stub 

&& !expectation)
if expectation = find_almost_matching_expectation(sym, *args)
expectation.advise(args, block) unless
expectation.expected_messages_received?
end
stub.invoke(*args, &block)
elsif expectation
expectation.invoke(*args, &block)
elsif expectation = find_almost_matching_expectation(sym, *args)
expectation.advise(args, block) if null_object? unless
expectation.expected_messages_received?
raise_unexpected_message_args_error(expectation, *args) unless
(has_negative_expectation?(sym) or null_object?)
else
@target.send :method_missing, sym, *args, &block
end
end

My question is this… why do we fall back to method_missing here rather
than a simple ‘send’ to the target? I figure there is likely a reason,
so if someone could help me understand I’ll happily open up my
expectation to should_raise(NameError) and move along. :slight_smile:

Cheers,

Paul

On 30 Dec 2009, at 21:04, Paul H. wrote:

I’m fighting with this error messages that only shows up in certain situations that I can’t quite pin down

Sounds eerily familiar:

Cheers,
-Tom

2009/12/30 Paul H. [email protected]

method `nap’ for Time:Class

./features/step_definitions/stubs_dont_leak_steps.rb:10:in /^nap time should not be defined$/' features/either/stubs_dont_leak.feature:11:in Then nap time should not
be defined’

I’ve tracked it down to this line:

rspec/lib/spec/mocks/proxy.rb at master · dchelimsky/rspec · GitHub

This method is really unpleasant, perhaps some standard refactorings to
remove the complex conditional conditions and remove the nested if’s
would
be useful first of all.

On Mon, Jan 4, 2010 at 3:00 PM, David C.
[email protected]wrote:

rspec/lib/spec/mocks/proxy.rb at master · dchelimsky/rspec · GitHub

This method is really unpleasant, perhaps some standard refactorings to
remove the complex conditional conditions and remove the nested if’s would
be useful first of all.

On Mon, Jan 4, 2010 at 2:57 PM, Andrew P. [email protected]
wrote:

rspec/lib/spec/mocks/proxy.rb at master · dchelimsky/rspec · GitHub

This method is really unpleasant, perhaps some standard refactorings to
remove the complex conditional conditions and remove the nested if’s would
be useful first of all.

Agreed. Patches welcome!

On Tue, Jan 5, 2010 at 7:35 AM, Andrew P. [email protected]
wrote:

Agreed. Patches welcome!

David,

I hope my comment didn’t come out as sniping/bitchy/negative,

Absolutely not! You were spot on.

and the suggested refactorings were useful.

I learned a lot about that code going through it.

Couldn’t really make a patch as I don’t have the context to name things
correctly.

Understood. Hopefully that will improve over time.

Anyhow thanks once again for all your wonderful work on rspec and on this
mailing list it really is very much appreciated.

Thank you for saying so. Appreciation is always appreciated :slight_smile:

Cheers,
David

2010/1/4 David C. [email protected]

situations that I can’t quite pin down (rake features breaks, individual

David,

I hope my comment didn’t come out as sniping/bitchy/negative, and the
suggested refactorings were useful. Couldn’t really make a patch as I
don’t
have the context to name things correctly.

Anyhow thanks once again for all your wonderful work on rspec and on
this
mailing list it really is very much appreciated.

All best

Andrew

On Tue, Jan 5, 2010 at 11:16 AM, David C. [email protected]
wrote:

On Tue, Jan 5, 2010 at 7:35 AM, Andrew P. [email protected] wrote:

Anyhow thanks once again for all your wonderful work on rspec and on this
mailing list it really is very much appreciated.

Thank you for saying so. Appreciation is always appreciated :slight_smile:

I can appreciate that!


Rick DeNatale

Blog: http://talklikeaduck.denhaven2.com/
Twitter: http://twitter.com/RickDeNatale
WWR: http://www.workingwithrails.com/person/9021-rick-denatale
LinkedIn: Rick DeNatale - Developer - IBM | LinkedIn