Hamcrest包含匹配器

时间:2018-04-26 22:41:42

标签: json rest-assured matcher hamcrest

所以我的问题是作为类型的类型匹配呈现;

我有查询数据库的代码,并返回一个字符串类型的数组。当我尝试验证从Web服务返回的JSON消息时,其中一个值是原始整数(没有双引号),并且验证失败,因为它表明:

< b>预期:可迭代包含{&#34; 1&#34;,&#34; 1&#34;,&#34; 1&#34;,&#34; 1&#34;,&#34; 1&#34 ;}

实际:[1,1,1,1,1]

我使用包含匹配器来验证ListArray的值对许多由查询返回。我的假设是实际被评估为整数,但要验证的值(预期)是字符串。

我&#39;我一直绞尽脑汁尝试HasToString或hasItem匹配器,但我认为如果目标是单个值,那只会解析toString。

我想我的最终问题是,有没有办法迫使Hamcrest评估将JSON数据作为String,或者将Expected隐式/显式地转换为评估类型?

提前致谢。

1 个答案:

答案 0 :(得分:0)

所以,我认为我想出了这个;我最终做的是在提取的对象ArrayList上执行 toString()。,这给了我字符串值;代码示例如下:

ArrayList<String> myObj = response.path(jsonField);
String[] myObjStr = new String[myObj.size()];
int x = 0;
        for (Object obj : myObj){
            myObjStr[x] = obj.toString();
            x++;
        }

从那里,我能够比较得到的数组;现在,如果我能弄清楚如何摆脱嵌套元素的讨厌的尖括号......