속성이 일관되지 않음에 대한 restascasured 및 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>
.
내 테스트에서 나는이
과 같은 속성을 읽음으로써 반환 된 항목 수를 확인하고 싶습니다.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)
.
그러나 내 테스트를 실행하면 Expression returned
가 속성 값을 반환하지 않고 비어있는 것 같습니다. []
왜 이것이 작동하지 않는 이유는 무엇입니까?
해결책
"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