Spec-Zone.ru › Ruby on Rails 6.0

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

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

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

  setup do
    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(level), где level — это уровень, используемый при ведении лога, например, info, debug, warn и так далее.

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

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

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

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

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

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

Spec-Zone.ru

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