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做了什么,你怎么能避免使用它?
答案 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。