恢复和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)
.
,它适用于
现在我想要控制XMLNS中的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)
.
但是,当我的测试运行时,表达式生成的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