这些方法都做工精细的拆解方法:
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
对我来说工作正常。要小心,如果你有一个无限循环或类似的东西,你不会注意到这一点。
来源
2011-12-07 10:58:46
Jan
编辑:我可以用self.method_name而不是@method_name得到测试名称。结果仍不清楚。 – Jan