作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在为我的项目使用 Rails 4.2,但我不知道如何检查特定类的缺失。我尝试使用 assert_select 'p.class_name', false
和 assert_select '.class_name', false
。它给出了同样的错误:
ArgumentError: ArgumentError: wrong number of arguments (given 3, expected 1)
还有我做的时候
puts assert_select 'p', :attributes => {:class => 'class-name'}
它正在选择所有不应完成的 p 标签。
此外,当我通过执行以下操作检查类中是否存在文本时:
assert_select 'p.class_name', 'Hello_world'
它给出了同样的错误。
但后来我试着去做
assert_select 'p', 'Hello-world'
它工作正常。
最后,如何在 rails 4.2 中断言选择一个类?
最佳答案
对于 HTML 上任意复杂的断言,请使用我的 assert_xpath
.第一步是隔离你的 <p>
的容器。 .我们假设它在 <article>
中, 所以使用 //article
的 XPath .然后调用refute_xpath
XPath 为 p[ contains(@class, "class-name") ]
.像这样把它们放在一起:
get :action
assert_xpath '//article' do
refute_xpath 'p[ contains(@class, "class-name") ]'
assert_xpath 'p[ "Hello World" = text() ]'
end
XPath 符号可以像关系数据库查询一样复杂和精细,不像 assert_select
的 CSS 选择器。用途。
将我的方法粘贴到您的 test_helper.rb
中文件:
class ActiveSupport::TestCase
def assert_xml(xml)
@xdoc = Nokogiri::XML(xml, nil, nil, Nokogiri::XML::ParseOptions::STRICT)
refute_nil @xdoc
return @xdoc
end
def assert_html(html=nil)
html ||= response.body
@xdoc = Nokogiri::HTML(html, nil, nil, Nokogiri::XML::ParseOptions::STRICT)
refute_nil @xdoc
return @xdoc
end
def assert_xpath(path, replacements={}, &block)
@xdoc ||= nil # Avoid a dumb warning
@xdoc or assert_html # Because assert_html snags response.body for us
element = @xdoc.at_xpath(path, nil, replacements)
unless element
complaint = "Element expected in:\n`#{@xdoc}`\nat xpath:\n`#{path}`"
replacements.any? and complaint += "\nwith: " + replacements.pretty_inspect
raise Minitest::Assertion, complaint
end
if block
begin
waz_xdoc = @xdoc
@xdoc = element
block.call(element)
ensure
@xdoc = waz_xdoc
end
end
return element
end
def refute_xpath(path, replacements={}, &block)
@xdoc ||= nil # Avoid a dumb warning
@xdoc or assert_html # Because assert_html snags @response.body for us
element = @xdoc.at_xpath(path, nil, replacements)
if element
complaint = "Element not expected in:\n`#{@xdoc}`\nat xpath:\n`#{path}`"
replacements.any? and complaint += "\nwith: " + replacements.pretty_inspect
raise Minitest::Assertion, complaint
end
end
end
关于ruby-on-rails - 如何在 Rails 中断言选择一个类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49568810/
我是一名优秀的程序员,十分优秀!