문제

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"));
.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top