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