1 回答

TA貢獻(xiàn)1856條經(jīng)驗(yàn) 獲得超5個(gè)贊
如果您想放心地提出復(fù)雜的請(qǐng)求,則必須遵循此處描述的 synthax groovy gpath,如此處rest-assured doc所述:
請(qǐng)注意,JsonPath 實(shí)現(xiàn)使用Groovy 的 GPath語(yǔ)法,不要與 Jayway 的JsonPath實(shí)現(xiàn)混淆。
所以你必須玩一些 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()")
所以這個(gè)表達(dá)式應(yīng)該可以工作cars.collect { it.value.size() }.sum()。該collect方法就像函數(shù)式編程中的 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
}
添加回答
舉報(bào)