модуль 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 101 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 92 def wait @notifier.wait end
Ожидает публикации уведомлений.
© 2004–2021 David Heinemeier Hansson
Licensed under the MIT License.