0

我的 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 中的元素。

4

2 回答 2

4

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

于 2010-05-02T02:11:42.910 回答
0

最后,我使用了 .should have_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
于 2010-05-04T20:39:00.950 回答