沉默弃用警告Rspec Rails

时间:2018-06-24 10:20:30

标签: ruby-on-rails rspec suppress-warnings

这是故意的吗?我的意思是输出消息说的是

If you need more of the backtrace for any of these deprecations you can 
configure `config.raise_errors_for_deprecations!`, and it will turn the
deprecation warnings into errors, giving you the full backtrace.

我想根据这些问题所获得的成千上万的观点,没人会想到一个更现实的前景吗?

If you would prefer not to receive these friendly warnings configure 
`Config.no_more_warnings_please_thanks_all_the_same`

我尝试过

To disable warnings when running rake test add $VERBOSE=nil into your spec/spec_helper.rb

ActiveSupport::Deprecation.behavior = :silence

ActiveSupport::Deprecation::DEFAULT_BEHAVIORS[:silence] = Proc.new {|message, callstack| }

我什至把它放在

之前
Bundler.require(*Rails.groups)

许多令人担忧的表达似乎有些人可能不了解局势的严重性。即

 "It's not good to ignore warnings. You should be reading all of them......" 

有什么想法吗?当然有人解决了。 Rspec社区中可能有人吗?

我实际上想禁止所有警告。当然,这并不是说我会忽略它们。但是,如果我只是对付费客户的旧产品进行一些简单的勉强编辑,我认为必须花费时间和金钱来处理警告对他们来说是不公平的。

从我的声誉来看,我对编程的经验不是很丰富,所以请同情我。

1 个答案:

答案 0 :(得分:1)

-谨慎使用-

首先,关于删除警告的一般警告。

第二,这就是我所做的。在RSpec.configure块中,添加以下代码行。

 config.before(:all, silent: true) do
    @with_warnings = $VERBOSE
    $VERBOSE = nil
  end

  config.after(:all, silent: true) do
    $VERBOSE = @with_warnings
  end

我把它放在rails_helper中。在我不想返回警告的describe块上,我将它们标记为silent:true。

describe "Is foo bar?", silent: true do
  # testing all the things
end

这将抑制一切,包括有关常量和未定义变量的警告。测试结果将保持不变,并且会让您知道foo实际上并不等于bar。

-谨慎使用-