On Aug 26, 2010, at 12:14 AM, David Chelimsky wrote:
On Aug 25, 2010, at 10:13 PM, Brian Ploetz 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>>

This message is telling you there is no ArgumentError method, not that the constant ArgumentError is missing. The method needs to be (adding ".new"):

   def currency_to_dollars(currency_amount)
raise ArgumentError.new("Currency amount can't be nil") if currency_amount.nil?
   end

You might see this form, too.

   def currency_to_dollars(currency_amount)
raise ArgumentError, "Currency amount can't be nil" if currency_amount.nil?
   end

Note the comma that separates the arguments to raise (Kernel#raise).

-Rob


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

These pass because NoMethodError, which is what is being thrown, is a subclass of StandardError and Exception.

HTH,
David
_______________________________________________
rspec-users mailing list
[email protected]
http://rubyforge.org/mailman/listinfo/rspec-users

Rob Biedenharn          
[email protected]     http://AgileConsultingLLC.com/
[email protected]               http://GaslightSoftware.com/

_______________________________________________
rspec-users mailing list
[email protected]
http://rubyforge.org/mailman/listinfo/rspec-users

Reply via email to