FYI, the same thing happens with rspec 2.0.0.beta.20 as well:

  1) Service should raise an ArgumentError if currency_amount is nil
     Failure/Error: lambda
{ @service.currency_to_dollars(nil) }.should
raise_error(ArgumentError)
     expected ArgumentError, got #<NoMethodError: undefined method
`ArgumentError' for #<Service:0x000001029665d8>>
     # ./test/spec/service_spec.rb:92:in `block (2 levels) in <top
(required)>'



On Aug 25, 11:13 pm, Brian Ploetz <[email protected]> wrote:
> Environment
> ------------------
> ruby 1.9.2p0 (2010-08-18 revision 29036) [x86_64-darwin10.4.0]
> rspec (1.3.0)
>
> Code
> -------
>     def currency_to_dollars(currency_amount)
>       raise ArgumentError("Currency amount can't be nil") if
> currency_amount.nil?
>     end
>
> Spec
> --------
>     it "should raise an ArgumentError if currency_amount is nil" do
>       lambda { @service.currency_to_dollars(nil) }.should
> raise_error(ArgumentError)
>     end
>
> Results in this failure:
> 1)
> 'Service should raise an ArgumentError if currency_amount is nil' FAILED
> expected ArgumentError, got #<NoMethodError: undefined method
> `ArgumentError' for #<Service:0x0000010087e5f0>>
> test/spec/service_spec.rb:92:in `block (2 levels) in <top (required)>'
>
> Changing the test to either of these two variants allows the the to pass:
>
>     lambda { @service.currency_to_dollars(nil) }.should
> raise_error(StandardError)
>     lambda { @service.currency_to_dollars(nil) }.should raise_error
>
> Why am I unable to test for a specific StandardError subclass?
>
> Thanks in advance for any help.
> BP
>
> _______________________________________________
> rspec-users mailing list
> [email protected]http://rubyforge.org/mailman/listinfo/rspec-users
_______________________________________________
rspec-users mailing list
[email protected]
http://rubyforge.org/mailman/listinfo/rspec-users

Reply via email to