我有一个RSS提要,我正在编写一个RSpec测试.我想测试
XML文档是否具有正确的节点和结构.不幸的是,我没有找到任何很好的例子,如何以干净的方式做到这一点.我只找到一些半实施的解决方案和过时的博文.如何使用RSpec测试XML文档的结构?
解决方法
嗨,我可以建议你使用自定义匹配器.
require 'nokogiri' RSpec::Matchers.define :have_xml do |xpath,text| match do |body| doc = Nokogiri::XML::Document.parse(body) nodes = doc.xpath(xpath) nodes.empty?.should be_false if text nodes.each do |node| node.content.should == text end end true end failure_message_for_should do |body| "expected to find xml tag #{xpath} in:\n#{body}" end failure_message_for_should_not do |response| "expected not to find xml tag #{xpath} in:\n#{body}" end description do "have xml tag #{xpath}" end end
完整的例子可以在这里找到
https://gist.github.com/Fivell/8025849