用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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |