我正在写一些单元测试,如下所示:
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