рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдлреАрдЪрд░ рд╕реБрдЭрд╛рд╡реЛрдВ/рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рд▓рд┐рдП рдпрд╣ рд╕рд╣реА рдЬрдЧрд╣ рд╣реИред
рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдорд┐рд▓рд╛рдирдХрд░реНрддрд╛ рд╣реИрдВ рдЬреЛ рдпрд╣ рдЬрд╛рдВрдЪрдиреЗ рдореЗрдВ рд╣рдорд╛рд░реА рд╕рд╣рд╛рдпрддрд╛ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдХреМрди рд╕реА ActiveJob рдиреМрдХрд░рд┐рдпрд╛рдВ рдХрддрд╛рд░ рдореЗрдВ рд╣реИрдВ ( have_enqueued_job
), рд▓реЗрдХрд┐рди рд╣рдорд╛рд░реЗ рдкрд╛рд╕ 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 . рдХреЗ рд▓рд┐рдП рд╕рдорд╛рдкрди
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдкрд╣рд▓реЗ рд╕реЗ рдХрд╣реАрдВ рдЕрдзрд┐рдХ рджреЗрд░ рд╕реЗ рдмреЗрд╣рддрд░, рд▓реЗрдХрд┐рди рдЗрд╕ рдХрд╕реНрдЯрдо рдорд┐рд▓рд╛рдирдХрд░реНрддрд╛ рдХреЛ рдХрдореЛрдмреЗрд╢ рдпрд╣ рдЪрд╛рд▓ рдЪрд▓рдиреА рдЪрд╛рд╣рд┐рдП: