Spec-Zone.ru › Ruby on Rails 4.1

модуль ActionMailer::TestHelper

Публичные методы экземпляра

assert_emails(количество) { || ... } Показать исходный код

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

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

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

def test_emails_again
  assert_emails 1 do
    ContactMailer.welcome.deliver
  end

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

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

def test_emails
  assert_no_emails
  ContactMailer.welcome.deliver
  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
# File actionmailer/lib/action_mailer/test_helper.rb, line 56
def assert_no_emails(&block)
  assert_emails 0, &block
end

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

Spec-Zone.ru

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