1 回答
TA贡献1856条经验 获得超5个赞
如果您想放心地提出复杂的请求,则必须遵循此处描述的 synthax groovy gpath,如此处rest-assured doc所述:
请注意,JsonPath 实现使用Groovy 的 GPath语法,不要与 Jayway 的JsonPath实现混淆。
所以你必须玩一些 groovy synthax:
int total = JsonPath.from("{ "
+ " \"cars\": {\n"
+ " \"Acura\": [\n"
+ " \"ILX\",\n"
+ " \"MDX\",\n"
+ " \"TLX\"\n"
+ " ],\n"
+ " \"Audi\": [\n"
+ " \"A3\",\n"
+ " \"A4\",\n"
+ " \"A6\",\n"
+ " \"A7\"\n"
+ " ],\n"
+ " \"BMW\": [\n"
+ " \"x\",\n"
+ " \"y\"\n"
+ " ]\n"
+ " }"
+ "}")
.getInt("cars.collect { it.value.size() }.sum()")
所以这个表达式应该可以工作cars.collect { it.value.size() }.sum()。该collect方法就像函数式编程中的 map 方法。因此,您将集合carsHashMap映射到size()它的值,然后收集sum()!
编辑
所以你只需要做:
Response response = SerenityRest.rest()
.contentType("application/json")
.when()
.get("/api/");
if (response.statusCode() == 200) {
int numUniqueModels = response.body().path("cars.collect { it.value.size() }.sum()"); // 9
}
添加回答
举报