Spec-Zone.ru › Ruby on Rails 4.2

модуль ActionMailer::TestHelper

Предоставляет вспомогательные методы для тестирования Action Mailer, включая assert_emails и assert_no_emails

Открытые методы экземпляра

assert_emails(number) { || ... } Показать исходный код
# File actionmailer/lib/action_mailer/test_helper.rb, line 28
def assert_emails(number)
  if block_given?
    original_count = ActionMailer::Base.deliveries.size
    yield
    new_count = ActionMailer::Base.deliveries.size
    assert_equal number, new_count - original_count, "#{number} emails expected, but #{new_count - original_count} were sent"
  else
    assert_equal number, ActionMailer::Base.deliveries.size
  end
end

Утверждает, что количество отправленных писем соответствует заданному числу.

def test_emails
  assert_emails 0
  ContactMailer.welcome.deliver_now
  assert_emails 1
  ContactMailer.welcome.deliver_now
  assert_emails 2
end

Если передается блок, этот блок должен вызвать отправку указанного количества писем.

def test_emails_again
  assert_emails 1 do
    ContactMailer.welcome.deliver_now
  end

  assert_emails 2 do
    ContactMailer.welcome.deliver_now
    ContactMailer.welcome.deliver_now
  end
end
assert_no_emails(&block) Показать исходный код
# File actionmailer/lib/action_mailer/test_helper.rb, line 58
def assert_no_emails(&block)
  assert_emails 0, &block
end

Утверждает, что письма не отправлялись.

def test_emails
  assert_no_emails
  ContactMailer.welcome.deliver_now
  assert_emails 1
end

Если передается блок, этот блок не должен вызывать отправку каких-либо писем.

def test_emails_again
  assert_no_emails do
    # No emails should be sent from this block
  end
end

Примечание: Это утверждение просто сокращенная запись для:

assert_emails 0

© 2004–2018 David Heinemeier Hansson
Licensed under the MIT License.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API