在测试用例中,我使用以下响应执行调用:
[
{
"ourID": "770050010000000010",
"date": "2019-03-07",
"otherValue": null
},
{
"ourID": "770050010000000020",
"date": "2019-03-07",
"otherValue": null
}
]
测试由serenity执行,我使用restasured执行调用:
Response response = RestAssuredApiHelper.baseRestCall(headers, baseUrl, path)
.body(requestBody)
.post();
assertThat(response.getBody().jsonPath().get("$.[?(@.ourID=='770050010000000010')].date"), contains("2019-03-07"));
Assert不起作用,可能是因为restassured使用gpath而不是jsonpath,但是在我阅读的所有文档中都有这样的例子。我错过了什么?
我得到的错误是:
java.lang.IllegalArgumentException: Invalid JSON expression:
Script1.groovy: 1: unexpected token: [ @ line 1, column 29.
$.[?(@.meteringPointEANID=='770050010000000010')].energySource
^
1 error
3条答案
按热度按时间svmlkihl1#
检查以下内容code:--(我相信json表达式是正确的,没有检查)
聚甲醛dependency:---
lfapxunr2#
对restassured使用jsonpath的另一种方法是使用restassured的内置反序列化机制。
如果不知道对象的返回类型,可以检查以下内容:https://github.com/rest-assured/rest-assured/wiki/usage#deserialization-使用泛型
通用解决方案如下所示:
如果你知道响应对象是什么,那就更简单了:
pb3s4cty3#