I'm stuck on a test scenario.
I have a controller method:
def update
@object = Object.find params[:id]
# some other stuff
@object.save
rescue ActiveRecord::StaleObjectError
# woo other stuff
end
The first part I test with:
context '#update'
let(:object) { double }
it 'nothing fails' do
# some other stuff
expect(Object).to receive(:find).with('5').and_return(object)
expect(object).to receive(:save).and_return(true)
xhr :put, :update, id:5
expect(response).to be_success
expect(assigns(:object)).to eq(object)
end
end
Now I want to test the ActiveRecord::StaleObjectError
exception. I want to stub it, but I didn't find any solution how to do this.
So my question is, how to raise the ActiveRecord::StaleObjectError
in an RSpec test?
let(:exc) { MyErrorClass.new(:some, :arg) }
and pass into.and_raise
method =>expect(object).to receive(:save).and_raise(exc)
– Garmon