Spec-Zone.ru › Ruby on Rails 8.1

модуль 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–2021 David Heinemeier Hansson
Licensed under the MIT License.

Spec-Zone.ru

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