xml的流利断言

Dev*_*Dev 3 c# xml unit-testing xunit fluent-assertions

我有一个表单的 xml 文件:

<Level1>
   <Level2>
        <Level3>
             <Level4 attr1 = "123.4" attr2 = ""> </Level4>
        </Level3>
   </Level2>
<Level1> 
Run Code Online (Sandbox Code Playgroud)

我正在使用 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
}
Run Code Online (Sandbox Code Playgroud)

我收到错误消息:预期 XML 文档<Level1>...</Level1>具有带有子“Level3”的根元素,但未找到此类子元素。它试图将 Level3 视为 Level1 而不是 Level2 的孩子。

如何获取Level3并检查Level4中是否存在某些属性?有没有办法检查属性值的类型?

Dev*_*Dev 5

终于让它工作了,将来有人可能会发现它有用

它应该是:

doc.Should().HaveElement("Level2").Which.Should().HaveElement("Level3");
Run Code Online (Sandbox Code Playgroud)