Свободные утверждения для XML - PullRequest
2 голосов
/ 11 октября 2019

У меня есть XML-файл в форме:

<Level1>
   <Level2>
        <Level3>
             <Level4 attr1 = "123.4" attr2 = ""> </Level4>
        </Level3>
   </Level2>
<Level1> 

Я использую XUnit для проверки структуры XML.

[Fact]
public void Xml_Check()
{
    var doc = XDocument.Load("test.xml");
    doc.Should().HaveRoot("Level1");
    doc.Should().HaveElement("Level2");
    doc.Should().HaveElement("Level3");  //Erroring on this line
}

Я получаю сообщение об ошибке: в ожидаемом XML-документе <Level1>...</Level1> есть корневой элемент с дочерним элементом "Level3", но такой дочерний элемент не найден. Он пытается рассматривать Уровень 3 как ребенка от Уровня 1 вместо Уровня 2.

Как получить Level3 и проверить, существуют ли определенные атрибуты на Level4? Есть ли способ проверить тип значения атрибута?

1 Ответ

3 голосов
/ 11 октября 2019

Наконец-то все заработало, и кто-то может найти это полезным в будущем

Это должно быть:

doc.Should().HaveElement("Level2").Which.Should().HaveElement("Level3");
...