属性が一貫していない場合の解像度の変更およびGPATH式
-
21-12-2019 - |
質問
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"));
. 所属していません StackOverflow