質問

Javaでの単位/統合テストを行うための安定したフレームワークを使用します。

RESTサービスからのXML回答はこれに似ています。

<?xml version="1.0" encoding="UTF-8"?>
<Items xmlns="urn:service:com:namespace:item/1"
    returned="3" found="3">

    <ItemRef object="urn:svc:com:car:item:123456" type="door">door-123456.pdf</ItemRef>
    <ItemRef object="urn:svc:com:car:item:983425" type="mirror">mirror-43562577.pdf</ItemRef>
    <ItemRef object="urn:svc:com:car:item:983425" type="wheel" >door-94584854.pdf</ItemRef>    
</Items>
.

私のテストでは、この

のように属性returnedを読むことによって返されたアイテムの数を確認することに興味があります。
givenOK()
    .expect()
        .body("Items.@returned", equalTo("3")) // this is a string
    .when()
    .get(myurl)
.

そしてそれはうまく機能します

今、XMLNのURNが同じロジックで正しいかどうかを制御したいと思います:

givenOK()
    .expect()
        .body("Items.@returned", equalTo("3")) // this is a string
        .body("Items.@xmlns", equalTo("urn:service:com:namespace:item/1"))
    .when()
    .get(myurl)
.

しかし私のテスト実行時に、Expressing Items.@xmlnsは属性の値を返さないようですがempty:[]

これが機能していないのかどうか?

役に立ちましたか?

解決

ネームスペースを示すので、「xmlns」属性は特別に扱われる可能性がありますか?

作業範囲は、XMLConfigの名前空間を宣言し、体内の何かを検証することです。

given().
        config(RestAssured.config().xmlConfig(XMLConfig.xmlConfig().declareNamespace("ns", "urn:service:com:namespace:item/1"))).
when().
        get(myUrl).
then().
        body("'ns:ItemRef'[0]", equalTo("door-123456.pdf"));
.

と複数のノードと属性を持つ別の例(明示的なパス):

given()
    .config(
        RestAssured.config()
            .xmlConfig(XmlConfig.xmlConfig()
                .declareNamespace("ns", "urn:service:com:namespace:item/1"))).
    when()
        .get(myUrl)
    .then()
        .body("'ns:RootNode'.'ns:Level1'.'ns:Level2'[0].'@ns:id'", equalTo("AN-ID-123"));
.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top