Rails中的XML测试 - 修复Ruby中的Builder :: XmlMarkup中的属性顺序 -

时间:2010-04-30 20:14:05

标签: ruby-on-rails xml ruby web-services builder

我的Rails应用程序中有以下测试:

it "should validate xml" do
  builder = Builder::XmlMarkup.new
  builder.server(:name => "myServer", :ip => "192.168.1.1").should == "<server name=\"myServer\" ip=\"192.168.1.1\"/>"
end

问题是此测试有时会通过,因为xml标记属性的顺序是不可预测的。有没有办法强制这个订单?有没有其他简单的方法来构建xml?

这个例子很简单,我有一个很大的XML。我的问题是我想进行集成测试,它将WebService调用与固定的XML文件进行比较。否则,我将不得不解析xml并在XML中逐个元素地验证。

2 个答案:

答案 0 :(得分:4)

根据XML建议书,元素中属性的顺序是不可预测的。因此,如果您的测试期望属性按特定顺序排列,则该测试不正确。

答案 1 :(得分:0)

最后,我使用了.should has_tag断言:

it "should validate xml" do
  builder = Builder::XmlMarkup.new
  xml = builder.server(:name => "myServer", :ip => "192.168.1.1")
  xml.should have_tag("server[name=myServer]")
  xml.should have_tag("server[ip=192.168.1.1]")
end