آمل أن يكون هذا هو المكان المناسب لاقتراحات / طلبات الميزات.
لدينا أدوات مطابقة محددة تساعدنا في التحقق من وظائف ActiveJob التي تم وضعها في قائمة الانتظار ( have_enqueued_job
) ، لكن ليس لدينا أشياء مماثلة لـ ActionMailer.
لقد قمت ببعض البحث ويبدو أن هذه هي الطريقة العامة المستخدمة لاختبار إرسال بريد إلكتروني. هذا لا يبدو صحيحًا تمامًا لأنني لا أصف البريد الإلكتروني الذي تم إرساله ، وأحتاج إلى الغوص في ActionMailer للحصول على عدد عمليات التسليم.
expect {
post :create, params: { user: attributes_for(:user) }
}.to change(ActionMailer::Base.deliveries, :size).by(1)
سيكون من الرائع لو كان لدينا مطابقات إضافية لرسائل البريد الإلكتروني حتى نتمكن من وضع مواصفات أكثر تحديدًا ووصفًا.
expect {
post :create, params: { user: attributes_for(:user) }
}.to have_enqueued_mailer(UserMailer, :welcome).with(User.first)
آمل ألا أفوت الوظائف الحالية المشابهة لهذا ، لقد ألقيت نظرة جيدة ولكن لم أجد أي شيء من هذا القبيل.
التأخير أفضل من عدم التأخير ، ولكن يجب أن يقوم هذا المطابق المخصص بالمهمة بشكل أو بآخر:
RSpec::Matchers.define :have_enqueued_mailer do |mailer_klass, mailer_action|
match do |actual|
actual.call
<strong i="6">@mailer_klass</strong>, <strong i="7">@mailer_action</strong>, _, *<strong i="8">@args</strong> = enqueued_jobs[0][:args]
<strong i="9">@mailer_klass</strong> == mailer_klass.to_s &&
<strong i="10">@mailer_action</strong> == mailer_action.to_s
end
chain :with do |*args|
<strong i="11">@args</strong> == args
end
supports_block_expectations
end
هل هذه المشكلة نسخة مكررة من # 1901؟
نعمybiquitous! :)
شكرا cgat لمنظِّم .
الإغلاق # 1901
التعليق الأكثر فائدة
التأخير أفضل من عدم التأخير ، ولكن يجب أن يقوم هذا المطابق المخصص بالمهمة بشكل أو بآخر: