我正在使用一些记录到全局静态日志记录类的代码,例如:
GlobalLog.debug("Some message")
但是在我的测试中,我不想包含真实的日志,因为它引入了很多不需要的依赖项。所以我想模拟一下:
describe "some function" do
before(:all) do
log = double('log')
GlobalLog = log
log.stub(:debug)
end
...
end
不幸的是,因为在每个示例之后都会清除 double ,所以这是不允许的:
https://www.relishapp.com/rspec/rspec-mocks/docs/scope
如果我将 before(:all)
更改为 before(:each)
,代码可以运行,但我会收到警告:
warning: already initialized constant GlobalLog
这阻塞了我的测试输出,所以我想避免警告。有没有干净的解决方案?
最佳答案
在您的 spec_helper.rb
中定义一次 GlobalLog
。
class GlobalLog
class << self
[:info, :debug, :warn, :error].each do |method|
define_method(method) {|*|}
end
end
end
如果你想让它更干净,你可以把它放在 spec/support
中。
关于ruby - 如何在 rspec 示例中删除全局日志记录功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19175823/