gpt4 book ai didi

ruby-on-rails - 如何在 Rails 中断言选择一个类?

转载 作者:行者123 更新时间:2023-12-05 06:35:42 26 4
gpt4 key购买 nike

我正在为我的项目使用 Rails 4.2,但我不知道如何检查特定类的缺失。我尝试使用 assert_select 'p.class_name', falseassert_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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com