如何将自定义标签名称与特殊字符匹配?

时间:2017-09-20 18:57:41

标签: ruby-on-rails ruby xml rspec

我正在尝试添加一个rspec来测试我正在构建的xml文件。在实际的xml代码中,我有:

<g:shipping_weight>5 lb</g:shipping_weight>

我只想确保该值符合我的预期,但如果标签中包含特殊字符,则rspec无法匹配。来自我的规范的片段:

context 'verify weight' do
  subject { response.body }
  it { is_expected.to have_css('g:shipping_weight', text: '12.34 lb')}
end

have_selectorhave_tag也与选择器不匹配,因此我依赖于使用match,但我相信还有更好的方法吗?

1 个答案:

答案 0 :(得分:0)

几个月前我遇到了这个问题,在找到解决方案之前花了几个小时谷歌搜索。假设您在此处使用Nokogiri进行解析,您应该能够访问此属性的文本,如下所示:

response.body.at_css("g|shipping_weight").text

没错,您使用管道|代替冒号。我不认为我曾经找到过这方面的文档,现在我无法找到让我尝试这个的例子。但它有效!

(请注意,您必须在XML文档的开头定义g命名空间。)