mercredi 15 avril 2020

RSpec - how to check if the inside method been called

I got a method to update the person by id:

def update_person(id)
  handle_exceptions do
     person = Person.find(id)
     #...other
  end
end

When this id doesn't exist, the handle_exception should be called. But how could I test it? The test I wrote is:

context 'not found the proposals' do
  subject {controller.send(:update_person, 3)}

  before do
    allow(Person).to receive(:find).and_raise(ActiveRecord::RecordNotFound)
    allow(subject).to receive(:handle_exceptions)
  end

  it 'calls handle_exceptions' do
    expect(subject).to have_received(:handle_exceptions)
  end
end

But it not works, I got a failure said: Failure/Error: expect(subject).to have_received(:handle_exceptions)

   ({:message=>"Not Found", :status=>:not_found}).handle_exceptions(*(any args))
       expected: 1 time with any arguments
       received: 0 times with any arguments

Aucun commentaire:

Enregistrer un commentaire