have_enqueued_mail
マッチャー
have_enqueued_mail
(または enqueue_mail
としてもエイリアスされる)マッチャーは、指定されたメーラーがキューに入れられたかどうかを確認するために使用されます。
背景
アクティブジョブが利用可能であることが前提です。
メーラークラスとメソッド名の確認
"spec/mailers/user_mailer_spec.rb" という名前のファイルがあるとします。
require "rails_helper"
RSpec.describe NotificationsMailer do
it "matches with enqueued mailer" do
ActiveJob::Base.queue_adapter = :test
expect {
NotificationsMailer.signup.deliver_later
}.to have_enqueued_mail(NotificationsMailer, :signup)
end
end
rspec spec/mailers/user_mailer_spec.rb
を実行すると、
すべての例がパスするはずです。
メーラーのキューイング時間の確認
"spec/mailers/user_mailer_spec.rb" という名前のファイルがあるとします。
require "rails_helper"
RSpec.describe NotificationsMailer do
it "matches with enqueued mailer" do
ActiveJob::Base.queue_adapter = :test
expect {
NotificationsMailer.signup.deliver_later(wait_until: Date.tomorrow.noon)
}.to have_enqueued_mail.at(Date.tomorrow.noon)
end
end
rspec spec/mailers/user_mailer_spec.rb
を実行すると、
すべての例がパスするはずです。