2014-12-02 82 views
1

我得到了一些帶有一些日誌的ProgressBar,並且它在每次迭代中都顯示出來。當我運行RSpec時,我希望只顯示結果(只有.f,而不是我的應用可能顯示的輸出)。禁用將輸出放入RSpec中

之間,我沒有使用的軌道,所以我沒有環境。

我得到這個:

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

在測試中就存根記錄:

ProgressBar.any_instance.stub(:log) 

如果有超過1個測試這個動作,把它放在before(:each)

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

如果使用progressbar寶石,它會創建ProgressBar::Base例如,所以您應該使用:

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

感謝; bt我把它放在配置塊(config.before(:each))中的'spec_helper'文件中,不幸的是,它不起作用 – sidney 2014-12-02 10:36:24

+0

當它直接放在規格中時它工作嗎? – 2014-12-02 10:41:14

+0

仍然無法正常工作,我檢查thoroughfully,它不工作:( – sidney 2014-12-02 10:51:37

4

any_instance自RSpec 3起已棄用。

此外ProgressBar內部類似乎已經改變。這爲我做:

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