0

我有一个示例 Xml 代码片段

<modification name="givenName" operation="add" xmlns="urn:oasis:names:tc:DSML:2:0:core">
    <value>Changed name</value>
</modification> 

xml 被加载到我的 XElement 中,我使用了

        XElement xml = ...to load xml above...;
        xml.Should().HaveAttribute("name", "givenName")
            .And.HaveAttribute("operation", "add")
            .And.HaveAttribute("xmlns", "urn:oasis:names:tc:DSML:2:0:core")
            .And.HaveElement("value");

测试我的代码,属性测试都通过了,但是元素测试(最后一个条件)失败了。

任何人都可以指出我的代码有什么问题?

我如何测试 Xml 有一个名为“value”的元素,它的值是“Changed name”?

提前致谢!

4

2 回答 2

2

我怀疑问题在于XName元素的不只是value- 它value 带有命名空间。大概HaveElement是命名空间感知的。试试这个:

XElement xml = ...to load xml above...;
XNamespace ns = "urn:oasis:names:tc:DSML:2:0:core";
xml.Should().HaveAttribute("name", "givenName")
    .And.HaveAttribute("operation", "add")
    .And.HaveAttribute("xmlns", "urn:oasis:names:tc:DSML:2:0:core")
    .And.HaveElement(ns + "value");

最后一行检查它是否有命名空间限定的元素。

于 2012-08-23T20:37:58.970 回答
2

它将成为 Fluent Assertions 2.1 的一部分。如果你等不及,你可以通过 Git 存储库获得它

于 2013-02-23T15:12:41.980 回答