首页 > 解决方案 > 无效的 XML 路径键仍在 Rest Assured 中评估

问题描述

我的示例 Web 服务正在返回以下 XML。

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<errorResponse>
<errorCode>Wrong ID</errorCode>
<errorId>2</errorId>
</errorResponse>

通过以下测试。

response.then().body("errorResponse.errorId", Matchers.is("2"));
response.then().body("errorResponse.errorCode", Matchers.is("Wrong ID"));

response.then().body("errorResponse1.errorCode", Matchers.is("Wrong ID"));
response.then().body("errorResponse2.errorCode", Matchers.is("Wrong ID"));

我知道前两个测试很好,我没有得到的是为什么最后两个通过了?

标签: rest-assured

解决方案


Rest-assured 使用其xml-path库来评估您的 hamcrest 匹配器,并且该库包含执行实际检查的 XMLAssertion 类。

源代码可以在 GitHub 上找到:https ://github.com/rest-assured/rest-assured/blob/master/xml-path/src/main/groovy/io/restassured/assertion/XMLAssertion.groovy

在该文件的第 60 行,您可以看到它删除了第一个点之前的搜索键部分,因为它识别出我们正在从根节点进行评估。

因此你的钥匙:

"errorResponse3.errorCode" 

变成

".errorCode"

所以事实证明,这个初始路径是什么样的并不重要,它假定它是根节点的名称并无论如何都会丢弃它。


推荐阅读