【发布时间】:2018-10-07 17:38:32
【问题描述】:
所以我的问题表现为类型匹配;
我有查询数据库的代码,并返回一个字符串类型的数组。当我尝试针对从 Web 服务返回的 JSON 消息进行验证时,其中一个值是原始整数(没有双引号),并且验证失败,因为它说明:预期:可迭代包含 { "1", "1", "1", "1", "1"}实际:[1, 1, 1, 1, 1]我正在使用包含匹配器来验证值的 ListArray针对查询返回的许多。我的假设是 Actual 被评估为整数,但要验证的值 (Expected) 是字符串。我一直在绞尽脑汁尝试 HasToString 或 hasItem 匹配器,但我认为如果目标是单个值,那只会解析 toString。我想我的最终问题是,有没有办法强制 Hamcrest 将 JSON 数据评估为字符串,或隐式/显式地将 Expected 转换为评估的类型?提前致谢。【问题讨论】:
-
为什么不把字符串放在期望值中呢?这将解决所有问题,并且是最简单、最清晰和最好的方法。修改实际值以符合不同格式的预期是一个滑坡,因为您冒着转换隐藏问题的风险;你的情况很简单,但这是不好的做法,应该避免。
-
@Bohemian,这就是问题所在,期望值是字符串,它是被评估为 ArrayList
的实际值,所以匹配器只是不确定该怎么做用它。我希望我可以避免它,但是我们的 JSON 对象返回不同的类型......
标签: json rest-assured matcher hamcrest