Тест Rails: только журнал неудач / результат? - PullRequest
1 голос
/ 04 ноября 2011

Rails 3.0.10, Ruby 1.9.2, ActiveSupport :: TestCase

Я хотел бы напечатать в STDOUT часть журнала неудачных тестов (только).Если есть плагин для этого, который я не нашел, пожалуйста, сообщите мне.В противном случае я хотел бы знать:

  • Как получить результат (проход, сбой, ошибка) при разборке?В аналогичном вопросе предлагается перезаписать все методы assert для спасения исключений, но мне не слишком нравится этот подход.

Мой подход заключается в том, чтобы иметь настройку, которая изменяет ведение журнала на строкуи перекачайте нить в STDOUT при ошибке.

1 Ответ

2 голосов
/ 07 декабря 2011

Все эти методы прекрасно работают в методе разрыва:

self.passed?
self.class.name
self.method_name

Таким образом, в настройках вы можете сохранить старый регистратор и создать новый, который будет записывать в строковый буфер:

@old_logger = Rails.logger
@old_ar_logger = ActiveRecord::Base.logger
@current_buffer = StringIO.new
Rails.logger = Logger.new(@current_buffer)
ActiveRecord::Base.logger = Rails.logger

А в демонтаже, сбросить регистраторы, тест на пройденный?и дамп буферизованного журнала в случае, если это не так:

Rails.logger = @old_logger
ActiveRecord::Base.logger = @old_ar_logger
unless self.passed?
  @current_buffer.close_write
  STDOUT << @current_buffer.string
  @current_buffer.close
end

Это прекрасно работает для меня.Просто знайте, что если у вас есть бесконечный цикл или что-то подобное, вы не заметите это так просто.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...