用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

相关文章

validates:conclusion,:presence=>true,:inclusion=>{...
一、redis集群搭建redis3.0以前,提供了Sentinel工具来监控各...
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣...
上一篇博文 ruby传参之引用类型 里边定义了一个方法名 mo...
一编程与编程语言 什么是编程语言? 能够被计算机所识别的表...
Ruby类和对象Ruby是一种完美的面向对象编程语言。面向对象编...