我类(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_rollbar
和call_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.error
,Rollbar.warning
等只是Rollbar.log
的包装。)
试试这个:expect(Rollbar).to receive(:log).with(any_args).and_call_original