Reputation: 83
So my problem is presenting as a type-matching of sorts;
I have code that queries a database, and returns an array of string type. When I attempt to validate against my JSON message returned from a web service, one of the values is a primitive integer (without the double-quotes), and the validation is failing, as it is stating: Expected: iterable containing {"1", "1", "1", "1", "1"}Actual: [1, 1, 1, 1, 1]I'm using the contains matcher to validate a ListArray of values against many returned by the query. My assumption is that the Actual is being evaluated as an integer, but the values to validate against (Expected) are String. I've been racking my brain attempting the HasToString or hasItem matchers but I think that would just parse toString if the target is a single value.I guess my ultimate question is, is there a way to force Hamcrest to evaluate the JSON data as a String, or implicitly/explicitly cast the Expected to the evaluated type?Thanks in advance.Upvotes: 1
Views: 661
Reputation: 83
So, I acutally think I figured this one out; what I ended up doing was performing a toString(). on the extracted ArrayList of objects, which gave me string values; code example below:
ArrayList<String> myObj = response.path(jsonField);
String[] myObjStr = new String[myObj.size()];
int x = 0;
for (Object obj : myObj){
myObjStr[x] = obj.toString();
x++;
}
From there, I was able to compare the resulting arrays; Now if only I could figure out how to get rid of pesky angle brackets for nested elements...
Upvotes: 0