禁用在RSpec中输出输出

时间:2014-12-02 10:18:21

标签: ruby rspec progress-bar output stdout

我有一些带有一些日志的ProgressBar,并且每次迭代都会显示它。当我运行RSpec时,我希望仅显示结果(仅.f,而不是我的应用可能显示的输出。

之间,我没有使用铁轨,所以我没有环境。

我得到了这个:

enter image description here

我想要这个:

enter image description here

我的代码非常简单:

progress_bar = ProgressBar.create(:total => nil)
progress_bar.increment
progress_bar.log "New Page added on depth #{depth}! #{url}"

2 个答案:

答案 0 :(得分:4)

自RSpec 3以来,

any_instance已被弃用。

ProgressBar内部类似乎也发生了变化。这样做对我来说:

before(:each) do
  allow_any_instance_of(ProgressBar::Output).to receive(:stream).and_return(double().as_null_object)
end

答案 1 :(得分:2)

只是测试中的存根记录:

ProgressBar.any_instance.stub(:log)

如果此操作的测试次数超过1次,请将其放入before(:each)

before(:each) do
  ProgressBar.any_instance.stub(:log)
end

如果你使用progressbar gem,它会创建ProgressBar::Base个实例,所以你应该使用:

ProgressBar::Base.any_instance.stub(:log)