Spec-Zone.ru › Ruby on Rails 4.2

модуль ActiveSupport::LogSubscriber::TestHelper

Предоставляет некоторые вспомогательные функции для тестирования подписчиков логов, настраивая уведомления. Например, тесты подписчиков Active Record:

class SyncLogSubscriberTest < ActiveSupport::TestCase
  include ActiveSupport::LogSubscriber::TestHelper

  def setup
    ActiveRecord::LogSubscriber.attach_to(:active_record)
  end

  def test_basic_query_logging
    Developer.all.to_a
    wait
    assert_equal 1, @logger.logged(:debug).size
    assert_match(/Developer Load/, @logger.logged(:debug).last)
    assert_match(/SELECT \* FROM "developers"/, @logger.logged(:debug).last)
  end
end

Всё, что вам нужно сделать, это убедиться, что ваш подписчик логов добавлен в Rails::Subscriber, как во второй строке кода выше. Вспомогательные функции отвечают за настройку очереди, подписок и отключение цветности в логах.

Сообщения доступны в экземпляре @logger, который является логгером с ограниченными возможностями (он фактически ничего не отправляет в ваш вывод), и вы можете собрать их, используя @logger.logged(уровень), где уровень — это уровень, используемый при регистрации, например, info, debug, warn и так далее.

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

set_logger(logger) Показать исходный код
# File activesupport/lib/active_support/log_subscriber/test_helper.rb, line 99
def set_logger(logger)
  ActiveSupport::LogSubscriber.logger = logger
end

Переопределите, если вы используете другой логгер в своём подписчике логов.

def logger
  ActiveRecord::Base.logger = @logger
end
setup() Показать исходный код
# File activesupport/lib/active_support/log_subscriber/test_helper.rb, line 36
def setup
  @logger   = MockLogger.new
  @notifier = ActiveSupport::Notifications::Fanout.new

  ActiveSupport::LogSubscriber.colorize_logging = false

  @old_notifier = ActiveSupport::Notifications.notifier
  set_logger(@logger)
  ActiveSupport::Notifications.notifier = @notifier
end
teardown() Показать исходный код
# File activesupport/lib/active_support/log_subscriber/test_helper.rb, line 47
def teardown
  set_logger(nil)
  ActiveSupport::Notifications.notifier = @old_notifier
end
wait() Показать исходный код
# File activesupport/lib/active_support/log_subscriber/test_helper.rb, line 90
def wait
  @notifier.wait
end

Ожидать публикации уведомлений.

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

Spec-Zone.ru

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