On Mon, Feb 2, 2009 at 4:22 PM, Pat Maddox <perg...@gmail.com> wrote: > On Mon, Feb 2, 2009 at 3:30 PM, Ben Greenberg > <mailing_li...@bengreenberg.net> wrote: >> Hi all, >> >> This spec always passes: >> >> lambda do >> process_card @credit_card, billing_info, 10604, '1.1.1.1', @gateway >> end.should raise_error(MinimalCart::CaptureFailureError) do |ex| >> ex.should be_nil >> ex.should_not be_nil >> ex.responses.should be_nil >> ex.responses.should_include @auth_response >> ex.responses.include?.with('a').should be_true >> end >> >> Clearly, it makes no sense. Somehow the exception validation block is not >> running. What am I doing wrong? > > try using { } instead of do..end. Pretty sure that the problem you're > experiencing has to do with Ruby's block precedence.
oops I should have been more specific. I meant use { } for the block after raise_error: lambda do process_card @credit_card, billing_info, 10604, '1.1.1.1', @gateway end.should raise_error(MinimalCart::CaptureFailureError) { |ex| ex.should be_nil ex.should_not be_nil ex.responses.should be_nil ex.responses.should_include @auth_response ex.responses.include?.with('a').should be_true } Although I think that do..end.method is hideous and so I would change the lambda to use curly braces as well :) Pat _______________________________________________ rspec-users mailing list rspec-users@rubyforge.org http://rubyforge.org/mailman/listinfo/rspec-users