Method: ActionMailer::TestHelper#capture_emails

Defined in:
actionmailer/lib/action_mailer/test_helper.rb

#capture_emails(&block) ⇒ Object

Returns any emails that are sent in the block.

def test_emails
  emails = capture_emails do
    ContactMailer.welcome.deliver_now
  end
  assert_equal "Hi there", emails.first.subject

  emails = capture_emails do
    ContactMailer.welcome.deliver_now
    ContactMailer.welcome.deliver_later
  end
  assert_equal "Hi there", emails.first.subject
end


249
250
251
252
253
254
255
# File 'actionmailer/lib/action_mailer/test_helper.rb', line 249

def capture_emails(&block)
  original_count = ActionMailer::Base.deliveries.size
  deliver_enqueued_emails(&block)
  new_count = ActionMailer::Base.deliveries.size
  diff = new_count - original_count
  ActionMailer::Base.deliveries.last(diff)
end