0

Ruby on Rails 有时会给您带来令人讨厌的“忽略用 y 关闭 x 的尝试”警告,这些警告来自 assert_select。这些警告通常是无效 HTML 的结果,但有时即使 HTML 有效,它们也会出现。我的错误在运行时看起来像这样ruby test/functional/my_controller_test.rb

..ignoring attempt to close div with h2
  opened at byte 8551, line 207
  closed at byte 9554, line 243
  attributes at open: {"class"=>"my_css_class", "id"=>"object_1"}
  text around open: "  \r\n  \r\n  \r\n  \r\n\r\n  <div class=\"my_css_class"
  text around close: "</a>\r\n      </h2>\r\n\r\n      <span"

但是没有尝试关闭带有 h2 标签的 div。我尝试了一个 HTML 验证器,但没有成功。Giles 提到的 -W0 参数似乎有帮助-ruby -W0 test/functional/my_controller_test.rb不再发出警告,但这不适用于rake test:whatever. -W0 有什么作用,如何避免使用它?

4

2 回答 2

3

在测试助手中:

class ActionController::TestCase  
  include Devise::TestHelpers
  Paperclip.options[:log] = false
  Mocha::Deprecation.mode = :disabled

  #
  # kill verbsity
  #
  verbosity = $-v
  $-v = nil

end
于 2013-01-14T01:18:02.990 回答
1

Ruby 单元测试有多种命令行选项。-W 不属于它们,它是纯 Ruby 的命令行选项。如前所述ruby --help,ruby-W[level]命令行选项设置 Ruby 的警告级别;0=静音,1=中等,2=详细(默认)。ruby -W0将警告级别设置为静音。

$ ruby --help
  [...]
  -w              turn warnings on for your script
  -W[level]       set warning level; 0=silence, 1=medium, 2=verbose (default)

-W 标志还激活 Ruby 的“详细”模式。Mislav对详细模式有很好的解释。在 Ruby 代码中,可以使用 $VERBOSE 全局变量的值设置和测试详细程度,该变量可以有 3 种状态:nil ("0")、false ("1") 和 true ("2")。因此,您可以通过设置来抑制 Test::Unit 测试的警告

$VERBOSE = nil 

在你的test_helper.rb. 对于运行 RSpecs 测试,您可以类似地抑制 ruby​​ 警告

于 2012-07-09T08:38:50.317 回答