我有一些代碼,記錄到一個全局靜態日誌類,如工作:如何存根出全球性的日誌記錄功能在RSpec的例子
GlobalLog.debug("Some message")
然而,在我的測試中,我不希望包括真正的日誌,因爲它引入了很多不需要的依賴關係。所以我想嘲笑一下:
describe "some function" do
before(:all) do
log = double('log')
GlobalLog = log
log.stub(:debug)
end
...
end
不幸的是,因爲雙打均例如後被清除出來,這是不允許的:
https://www.relishapp.com/rspec/rspec-mocks/docs/scope
如果我改變before(:all)
到before(:each)
時,代碼的作品,但我得到一個警告:
warning: already initialized constant GlobalLog
這堵塞了我的測試輸出,所以我想避免警告。有一個乾淨的解決方案嗎?
我不得不修改參數:'define_method(method){| * args |}',但它基本上可行! – Stefan
謝謝,我補充了更正。 – davogones