How can I assert my properties inside the "description" array using the rest assured .body() method.
Example:
.body ("[0] .userType", equalTo (1)); // error
Here is my current JSON data which I want to assert with:
{
"validSession": true,
"value": "xxx",
"description": [
{
"userType": 1,
"userTypeDescription": "xxx",
"uname": "xx",
"distributorId": 1
}
]}
I dit it:
.body("validSession",is(true))
.body("description[0].userType", equalTo(1))
.body("description[0].userTypeDescription", containsString("xxx"))
.body("description[0].uname", containsString("xx"))
.body("description[0].distributorId", equalTo(1));
I tested and it worked. but I did not understand why it only worked by putting all elements of the array with index zero.
Can you explain?
Try using the following code snippet :
.body("description[0]", hasItem(1))
Let me know if it was helpful.
Can you explain?
The reason you needed to reference description[0]
in your test is that the element "description" in your JSON data is an array. You're using array syntax to declare your intent to read the first element of the array named "description".
You can also use Hamcrest:
Response data = httpClientRequest.getApiCall(url);
data.then().assertThat().body("description.userTypeDescription[0]", Is.is("xxx"));
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.