升級到 Rails 6.1 后,測驗中斷:
class MyJob < ActiveJob::Base
class MyError < StandardError; end
def perform
raise MyError
end
end
describe MyJob, type: :job do
it "throws an error" do
expect do
perform_enqueued_jobs { MyJob.perform_later }
end.to raise_error(described_class::MyError)
end
end
此規范因錯誤而失敗
expected MyJob::MyError, got #<Minitest::UnexpectedError: Unexpected exception> with backtrace:
當仔細觀察拋出的錯誤時,它看起來像這樣:
69:
70: describe MyJob, type: :job do
71: it "throws an error" do
72: expect do
73: binding.pry
=> 74: perform_enqueued_jobs { MyJob.perform_later }
75: end.to raise_error(described_class::MyError)
76: end
77: end
[1] pry(#<RSpec::ExampleGroups::MyJob>)> perform_enqueued_jobs { MyJob.perform_later }
Minitest::UnexpectedError: MyJob::MyError: MyJob::MyError
/usr/src/app/spec/lib/my_job_spec.rb:5:in `perform'
/usr/local/bundle/gems/activejob-6.1.6/lib/active_job/execution.rb:48:in `block in perform_now'
/usr/local/bundle/gems/activesupport-6.1.6/lib/active_support/callbacks.rb:117:in `block in run_callbacks'
/usr/local/bundle/gems/airbrake-13.0.0/lib/airbrake/rails/active_job.rb:22:in `block in perform'
/usr/local/bundle/gems/airbrake-ruby-6.1.0/lib/airbrake-ruby/benchmark.rb:13:in `measure'
/usr/local/bundle/gems/airbrake-13.0.0/lib/airbrake/rails/active_job.rb:21:in `perform'
/usr/local/bundle/gems/airbrake-13.0.0/lib/airbrake/rails/active_job.rb:45:in `block (2 levels) in <module:ActiveJob>'
/usr/local/bundle/gems/activesupport-6.1.6/lib/active_support/callbacks.rb:126:in `instance_exec'
/usr/local/bundle/gems/activesupport-6.1.6/lib/active_support/callbacks.rb:126:in `block in run_callbacks'
似乎錯誤以某種方式包裹著Minitest::UnexpectedError,但原始的潛在錯誤仍然存??在。
知道如何解決這個問題嗎?
uj5u.com熱心網友回復:
這些更改是在 Rails 6.1 中進行的perform_enqueued_jobs
因此,要修復您的測驗,您需要如下所示重寫它:
describe MyJob do
it "throws an error" do
expect do
described_class.perform_later
perform_enqueued_jobs
end.to raise_error(described_class::MyError)
end
end
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/493379.html
下一篇:如何讓兩個Ruby程式相互通信
