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に「値」という名前の要素があり、その値が「変更された名前」であることをどのようにテストできますか?

前もって感謝します!

4

2 に答える 2

2

これは Fluent Assertions 2.1 の一部になります。待ちきれない場合は、Git リポジトリから入手できます

于 2013-02-23T15:12:41.980 に答える
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 に答える