加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

用ruby将输出抑制到控制台

发布时间:2020-12-16 20:34:56 所属栏目:百科 来源:网络整理
导读:我正在写一些单元测试,如下所示: def executing_a_signal a_method(a_signal.new,a_model,a_helper); assert_equal(new_state,a_model.state)end 测试工作正常,但在执行逻辑的断言之前运行的方法主要通过put将各种消息打印到控制台. 有没有一个快速的,也许
我正在写一些单元测试,如下所示:
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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读