Тест RSpec Rollbar вызывается в методе, где возникает ошибка - PullRequest
2 голосов
/ 31 октября 2019

Я могу проверить, что Rollbar.warning был вызван, но когда он вызывается в методе, который также вызывает ошибку, он терпит неудачу из-за возникновения ошибки и пропускает Rollbar.warning.

  context 'unauthorized' do
    before do
      allow(Rollbar).to receive(:warning)
    end

    it 'sends a warning to rollbar' do
      subject.send(:log_and_raise_error)

      expect(Rollbar).to have_received(:warning)
    end
  end

Вот метод, который я тестирую:

  def log_and_raise_error
    Rollbar.warning(
      "Not authorized error accessing resource #{ResourceID}"
    )

    raise NotAuthorized
  end

Но когда я запускаю спецификации, он терпит неудачу с:

 1) Authorization unauthorized sends a warning to rollbar
     Failure/Error: subject.send(:log_and_raise_error)

     NotAuthorized

Любые идеи, как я могу обойти эту ошибкуподнимать и еще тестировать Rollbar?

1 Ответ

1 голос
/ 31 октября 2019

Вы можете ожидать ошибку или восстановить ее:

ожидать ошибку:

    it 'sends a warning to rollbar' do
      expect { subject.send(:log_and_raise_error) }.to raise_error NotAuthorized

      expect(Rollbar).to have_received(:warning)
    end

ошибка восстановления:

    it 'sends a warning to rollbar' do
      subject.send(:log_and_raise_error) rescue NotAuthorized

      expect(Rollbar).to have_received(:warning)
    end

или

    it 'sends a warning to rollbar' do
      begin
        subject.send(:log_and_raise_error)
      rescue NotAuthorized
      # noop
      end
      expect(Rollbar).to have_received(:warning)
    end
...