Ruby on rails 测试Nokogiri XML的属性
使用RSpec我如何/应该进行测试以确保元素存在并具有指定的值 在我的示例中,我希望确保有一个值为1.0的EnveloperVersion,我还希望看到一个测试,以确保EnveloperVersion存在Ruby on rails 测试Nokogiri XML的属性,ruby-on-rails,xml,rspec,tdd,nokogiri,Ruby On Rails,Xml,Rspec,Tdd,Nokogiri,使用RSpec我如何/应该进行测试以确保元素存在并具有指定的值 在我的示例中,我希望确保有一个值为1.0的EnveloperVersion,我还希望看到一个测试,以确保EnveloperVersion存在 def self.xml_header builder = Nokogiri::XML::Builder.new do |xml| xml.Root{ xml.EnvelopeVersion "1.0" } end builder.to_xml end 我
def self.xml_header
builder = Nokogiri::XML::Builder.new do |xml|
xml.Root{
xml.EnvelopeVersion "1.0"
}
end
builder.to_xml
end
我尝试过这个,但是失败了,因为没有定义方法“has\u node”#
it 'should create valid header' do
doc = GEM::xml_header
doc.should have_node("EnvelopeVersion ")
end
我最终在测试中使用nokogiri来解析生成的xml并查询它
require 'nokogiri'
describe 'function' do
describe '.xml_header' do
it 'should create valid header' do
doc = Nokogiri::XML::Document.parse(GEM::xml_header)
doc.xpath('//Root/EnvelopeVersion').text.should eq("1.0")
end
end
end
您的解决方案可以简化:
doc = Nokogiri::XML::Document.parse(GEM::xml_header)
doc.xpath('//Root/EnvelopeVersion').text.should eq("1.0")
可简化为:
doc = Nokogiri::XML(GEM::xml_header)
doc.at('EnvelopeVersion').text.should eq("1.0")
Nokogiri有两种主要的“查找”方法:和。它们是通用的,因为它们同时接受XPath和CSS访问器search
返回所有匹配节点的节点集,at
返回匹配的第一个节点
还有一些方法,如果你想要一些更容易记忆的东西,还有和