I've come across rather strange behaviour when trying to raise an exception in a stubbed method.

I'm speccing the behaviour of a Rails create action, where I'm using save! to catch failed saves. In the case of working save, I'm using the following stub:

    @client.stub!(:save!).and_return(true)

which works fine.

However, in the negative case,

    @client.stub!(:save!).and_raise(ActiveRecord::RecordInvalid)

The save! call in the controller doesn't seem to work. I get the following error:

ArgumentError in 'ClientsController POST /clients with invalid parameters should show new form again'
wrong number of arguments (0 for 1)
/Users/jarkko/Sites/koulutusweb/app/controllers/clients_controller.rb: 41:in `create'

The line #41 consists only of

        @client.save!

I'm at a loss seeing where the wrong number of arguments is really happening because save! certainly shouldn't assume any args. Moreover, both cases work fine in the real app, so it seems to me something funky is happening when stubbing the method.

Anyone else stumbled upon anything similar?

Cheers,
//jarkko

--
Jarkko Laine
http://jlaine.net
http://dotherightthing.com
http://www.railsecommerce.com
http://odesign.fi


Attachment: smime.p7s
Description: S/MIME cryptographic signature

_______________________________________________
rspec-users mailing list
rspec-users@rubyforge.org
http://rubyforge.org/mailman/listinfo/rspec-users

Reply via email to