Тестирование XML в Rails - Исправлен порядок атрибутов в Builder :: XmlMarkup в ruby ​​- - PullRequest
0 голосов
/ 01 мая 2010

В моем приложении 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 ]

4 голосов
/ 02 мая 2010

Порядок атрибутов в элементе непредсказуем в соответствии с Рекомендацией XML. Так что если у вас есть тест, который ожидает, что атрибуты будут в определенном порядке, этот тест неверен.

0 голосов
/ 05 мая 2010

В конце я использовал утверждение .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
...