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
}
添加回答
舉報