rest-assured - 无效的 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 使用其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"
所以事实证明,这个初始路径是什么样的并不重要,它假定它是根节点的名称并无论如何都会丢弃它。
推荐阅读
- sql - 如何在自联接的单表中选择不匹配的记录
- npm - 如何使用绝对路径解决导入问题?
- xamarin.forms - Movesense 1.6.2 send_ble_nus_data B/s?
- javafx - 具有特定特征的海量数据的图形表示工具
- php - 检查是否从特定单选组中检查了单选按钮之一
- r - 将 x 轴中断设置为 x 美学的负值
- python - WTforms QuerySelectField , SelectField , MultipleSelectField 似乎不适用于 validate_on_submit()
- android - 如何在布局中拖放画布特定项目
- java - Swing/Spring 应用程序中的异常处理
- python-3.x - 将代理添加到 Firefox 驱动程序 - Selenium - Python