xml 的流利断言

Posted

技术标签:

【中文标题】xml 的流利断言【英文标题】:Fluent assertions for xml 【发布时间】:2020-02-08 23:27:26 【问题描述】:

我有一个 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 文档 &lt;Level1&gt;...&lt;/Level1&gt; 具有带有子“Level3”的根元素,但没有找到这样的子元素。它试图将 Level3 视为 Level1 而不是 Level2 的子级。

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

【问题讨论】:

Level1,2,3都在root下,你应该选择元素level2,然后申请level2.Should().HaveElelment("Level3") @iSR5 我试过 level2.Should().HaveElement("Level3") - 抛出错误 level2 在当前上下文中不存在 【参考方案1】:

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

应该是:

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

【讨论】:

以上是关于xml 的流利断言的主要内容,如果未能解决你的问题,请参考以下文章

为啥流利的断言失败但断言通过了枚举?

如何使用流利的断言结合集合和属性断言?

流利的断言;结合集合和对象图比较断言

如何使用流利断言断言集合中的所有项目?

OR 条件的流利断言

流利的断言 - 元组