How to verify json array using rest assured?

Jakim picture Jakim · Apr 10, 2017 · Viewed 14k times · Source

I have a JSON response:

["alice", "jason", "steve", "alex"]

then when use rest assured to test:

when().
       get("/names").
then().
       body(containsInAnyOrder("alice","jason","steve","alex"));

This is not working as I expected, it gives an error:

Expected: iterable over ["alice", "jason", "steve", "alex"] in any order
  Actual: ["alice", "jason", "steve", "alex"]

Also tried with:

when().
       get("/names").
then().
       body(hasItems("alice","jason","steve","alex"));

also not working.

How can I verify a simple JSON array in the response?

Answer

Clarkey picture Clarkey · May 3, 2018

To save any clicking, you have to supply a redundant string to the body method call:

when().
   get("/names").
then().
   body("", hasItems("alice","jason","steve","alex"));

Additionally, even if you only have one item in your array, you still have to use hasItems rather than hasItem. For example:

when().
   get("/names").
then().
   body("", hasItems("alice"));