简体   繁体   中英

How to assert based on body item with Rest Assured with JSON response?

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM