我类(class)中的逻辑有时使用Rollbar.silenced忽略某些异常(因此不会被报告)。

我正在尝试编写一个测试,以确保滚动条实际报告错误。

it 'does not mute rollbar' do
        expect(Rollbar).not_to receive(:silenced)
        expect(Rollbar).to receive(:error).with(any_args).and_call_original
        expect { query }.to raise_error(unknown_exception)
end

不幸的是,在报告无法挽救的错误时,rollbar不在:error:critical:warning等方法中使用。

我在滚动条sourcecode中看到了report_exception_to_rollbarcall_with_rollbar,它们被Rollbar.scoped包裹了。

因此,我尝试使用以下方法进行测试:
expect(Rollbar).to receive(:scoped).with(any_args).and_call_original
但它也告诉我:
 Failure/Error: expect(Rollbar).to receive(:scoped).with(any_args).and_call_original
       (Rollbar).scoped(*(any args))
           expected: 1 time with any arguments
           received: 0 times with any arguments

如何确保Rollbar捕获了异常并使用rspec对其进行了测试?

最佳答案

您要确保运行的行是Rollbar.log call in exception_reporter.rb。 (Rollbar.errorRollbar.warning等只是Rollbar.log的包装。)

试试这个:
expect(Rollbar).to receive(:log).with(any_args).and_call_original

09-29 23:12