Fil*_*uzi 5 ruby rspec ruby-on-rails ruby-on-rails-4 rollbar
我的类中的逻辑有时会Rollbar.silenced用来忽略某些异常(因此它们不会被报告)。
我正在尝试编写一个测试,以确保 rollbar 实际报告错误。
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
Run Code Online (Sandbox Code Playgroud)
不幸的是,在报告无法挽救的错误时:error,rollbar 不使用 in 、等方法。:critical:warning
我看到 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
Run Code Online (Sandbox Code Playgroud)
如何确保异常被 rollbar 捕获并使用 rspec 进行测试?
小智 3
您要确保运行的行是exception_reporter.rb 中的 Rollbar.log 调用。(Rollbar.error、Rollbar.warning等只是 的包装Rollbar.log。)
尝试这个:
expect(Rollbar).to receive(:log).with(any_args).and_call_original
| 归档时间: |
|
| 查看次数: |
1658 次 |
| 最近记录: |