【发布时间】:2015-07-24 11:07:02
【问题描述】:
我正在测试我的 Rails 4 应用程序 Sidekiq 在发送电子邮件方面的功能。我有一个简单的问题。我的工人
def perform(response_id)
response = Response.find(response_id)
micropost = response.micropost
if response && micropost
MicropostMailer.notify_question_followers_of_response(micropost, response, micropost.user.email).deliver_now unless micropost.user == response.user
micropost.followers.select{|follower| follower != response.user}.map{|follower|MicropostMailer.notify_question_followers_of_response(micropost, response, follower.email).deliver_now}
end
end
如您所见,发送几封电子邮件。细节并不那么重要(我认为)。
expect { MicropostWorker.perform_async(@answer.id) }.to change(MicropostWorker.jobs, :size).by(1)
...做它应该做的。
但我想了解电子邮件的具体细节,以测试它们是否会发送给合适的人。每次我......
expect(ActionMailer::Base.deliveries.length).to eq(3)
例如,我得到 0,我认为这是因为电子邮件没有立即发送。如何在测试中“执行异步发送”以便查看这些电子邮件
我看到了
perform_enqueued_jobs do
expect(ActionMailer::Base.deliveries.length).to eq(3)
end
在另一个问题中,但我认为这是旧的......
【问题讨论】:
-
在这种情况下,您可以运行“内联”作业,它会立即运行它们,因此您有机会检查电子邮件的细节。结帐此页面github.com/mperham/sidekiq/wiki/Testing
标签: email ruby-on-rails-4 rspec sidekiq