TLDR;如何測試異步ActionMailer操作(使用Sidekiq)的PORO參數是否正確序列化和反序列化?使用Sidekiq測試解組異步ActionMailer方法
Sidekiq提供RSpec匹配器,用於測試作業是否入隊並執行作業(使用給定的參數)。
-
給你一些情況下,我有一個Ruby on Rails的4應用程序與的ActionMailer。 ActionMailer內部是一種將PORO作爲參數的方法 - 引用我在電子郵件中需要的數據。我使用Sidekiq來處理後臺作業。事實證明,在將Sidekiq決定執行這項工作時失敗的觀點反序列化時存在一個問題。我一直無法找到一種方法來測試un/marshaling的正確性,以便我執行時使用的PORO被調用。
例如:
鑑於與動作
class ApplicationMailer < ActionMailer::Base
def send_alert profile
@profile = profile
mail(to: profile.email)
end
end
一個的ActionMailer ......
我會使用這樣的
profile = ProfileDetailsService.new(user)
ApplicationMailer.send_alert(profile).deliver_later
...
A nd有這樣的測試(但這失敗)
let(:profile) { ProfileDetailsService.new(user) }
it 'request an email to be sent' do
expect {
ApplicationMailer.send_alert(profile).deliver_later
}.to have_enqueued_job.on_queue('mailers')
end
任何援助將不勝感激。
如何爲ActionMailer動作執行此操作? –
您能否用更詳細的信息編輯您的問題? –
這個問題已經更新。 –