将警告视为失败

时间:2017-04-27 14:55:30

标签: ruby-on-rails ruby rspec

我试图清理我的测试套件并使其更容易我想让rspec在遇到警告时引发错误。而不是通过测试并继续,我希望测试失败。有没有办法配置rspec才能做到这一点?

4 个答案:

答案 0 :(得分:0)

您是在谈论弃用警告吗?或一般警告?

我知道您可以通过在config.active_support.deprecation = :raise

中设置test.rb来查看弃用警告时出错

答案 1 :(得分:0)

根据Method: RSpec::Matchers#output上的RubyDoc for RSpec,您应该可以使用expect(method).to_not output.to_stdout来验证测试失败。我不是使用RSpec的专家,但理论上应该可行。 RSpec-Puppet内置了非常相似的功能,使用Puppet.expects(:warning).never时出现警告失败。

答案 2 :(得分:0)

我不确定这会无处不在,因为没有合同必须通过Logger#warn发出警告,但这可能会做得不错。

class Logger
  def warn(*args)
    super
    if Rails.env.test?
      raise(RuntimeError, "failing upon warn")
    end
  end
end

log = Logger.new
log.warn("foo")

答案 3 :(得分:0)

Rspec为我们提供了一种全球化的简单方法:

config.before do
  expect_any_instance_of(Logger).to_not receive(:warn)
end