忽略尝试用y关闭x

时间:2012-07-06 16:55:37

标签: html ruby-on-rails ruby testing

Ruby on Rails有时会让你烦恼“忽略尝试用y关闭x”warnings arising from 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验证器,但没有成功。 The -W0 parameter mentioned by Giles seems to help - ruby -W0 test/functional/my_controller_test.rb不再发出警告,但这对rake test:whatever不起作用。 -W0做了什么,你怎么能避免使用它?

2 个答案:

答案 0 :(得分:3)

在测试助手中:

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

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

end

答案 1 :(得分:1)

有各种command line options for Ruby unit tests。 -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的“详细”模式。米斯拉夫对the verbose mode有一个很好的解释。在Ruby代码中,可以使用$ VERBOSE全局变量的值来设置和测试详细程度,该变量可以具有3种状态:nil(“0”),false(“1”)和true(“2”)。因此,您可以通过设置

来禁止Test :: Unit测试的警告
$VERBOSE = nil 

test_helper.rb中。要运行RSpecs测试,您可以suppress ruby warning similarly