用ruby将输出抑制到控制台

前端之家收集整理的这篇文章主要介绍了用ruby将输出抑制到控制台前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在写一些单元测试,如下所示:
def executing_a_signal
  a_method(a_signal.new,a_model,a_helper);
  assert_equal(new_state,a_model.state)
end

测试工作正常,但在执行逻辑的断言之前运行的方法主要通过put将各种消息打印到控制台.

有没有一个快速的,也许内置的方法来抑制输出到控制台?我只想对模型对象的最终效果感兴趣,为了保持控制台的基本清理,我希望找到一种方法来简单地阻止所有输出到控制台,而无需重写或注释掉将陈述仅供我测试.

这绝对不是一个关键问题,但是非常希望听到任何想法或想法(或解决方法).

解决方法

我在测试中使用以下代码段来捕获和测试STDOUT
def capture_stdout(&block)
  original_stdout = $stdout
  $stdout = fake = StringIO.new
  begin
    yield
  ensure
    $stdout = original_stdout
  end
  fake.string
end

使用这种方法,上述将成为:

def executing_a_signal
  capture_stdout { a_method(a_signal.new,a_helper) }
  assert_equal(new_state,a_model.state)
end

猜你在找的Ruby相关文章