我正在學習 RestAssured 集成測驗,并且有一個 Springboot REST API 應用程式,它已經使用 JUnit 5 進行單元測驗。現在,我想向其中添加 RestAssured 集成測驗,因此,我將 RestAssured 依賴項添加到我想要測驗的 REST API Springboot 應用程式中:
<dependency>
<groupId>io.rest-assured</groupId>
<artifactId>rest-assured</artifactId>
<scope>test</scope>
</dependency>
鑒于我的回應包含一個帶有 JSON 物件的 JSON 陣列,如下所示:
[
{
"id": 22,
"type": "House",
"size": 3000,
"soldDate": "2021-03-10"
},
{
"id": 27,
"type": "Appartment",
"size": "750",
"soldDate": "2020-01-22"
}
]
,我想使用 RestAssured 來測驗這個 JSON 回應,但我遇到了問題。我正在嘗試測驗以下內容:
@Test
final void restAssuredTestGetAllCars() {
get("myapp/cars")
.then().statusCode(200) //validate status code
.and()
.body("$", hasSize(2)) // GOOD: validate size of the json array (root)
.body("$.[0].id", hasItem(22)) //FAIL: validate 1st JSON object id
.body("$.[0].type", hasItem("House")) //FAIL: validate 1st JSON object type
.body("$.[0].size", hasItem(3000)) //FAIL: validate 1st JSON object size
.body("$.[0].soldDate", hasItem("2021-03-10")) //FAIL: validate 1st JSON object size
... also validate 2nd JSON object same way as above by accessing [1] index
... then validate using hasItems like below
.body("id", hasItems(22, 27)) //FAIL: validate all ids are present in response
.body("type", hasItems("House", "Appartment")) //FAIL: validate all types are present in response
.body("size", hasItems("3000", "750")) //FAIL: validate all sizes are present in response
.body("soldDate", hasItems("2020-03-10", "2020-01-22")) //FAIL: validate all sizes are present in response
);
}
但是,除了驗證hasSize(2)執行沒有錯誤之外,所有其他嘗試似乎都不起作用。
uj5u.com熱心網友回復:
這對你有用:
.body("$", hasSize(2))
.body("[0].id", equalTo(22))
.body("[0].type", equalTo("House"))
.body("[0].size", equalTo(3000))
.body("[0].soldDate", equalTo("2021-03-10"))
.body("id", hasItems(22, 27))
.body("type", hasItems("House", "Appartment"))
.body("getAt('size')", hasItems(3000, 750)) //In response: 3000, "750"
.body("soldDate", hasItems("2021-03-10", "2020-01-22"))
通過索引獲取:洗掉 dot
.,所以$.[0].id-->[0].idsize是反向關鍵字,所以size-->getAt('size')
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/331721.html
