如何在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

这阻塞了我的测试输出,因此我想避免警告。有没有干净的解决方案?

达沃贡

在中定义GlobalLog一次spec_helper.rb

class GlobalLog
  class << self
    [:info, :debug, :warn, :error].each do |method|
      define_method(method) {|*|}
    end
  end
end

spec/support如果您想清洁它,可以扔掉它。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章