модуль 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 и так далее.
Открытые методы экземпляров
# 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
# 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.