断言List <map>包含String

时间:2016-03-08 15:30:17

标签: list dictionary groovy contains assert

我试图断言唯一的问题是订单可能是随机的,所以我不能进行正常的比较所以我需要使用.contains这个问题,这是下面唯一的问题不行。

List<Map> aliasQueryResults
Map<String, String> newTokenValuesMap
assert aliasQueryResults.contains(newTokenValuesMap.get("{BASEALIAS}"))

newTokenValuesMap.get("{BASEALIAS}")很好,它返回字符串,所以这不是这次尝试的问题。

1 个答案:

答案 0 :(得分:1)

假设List实际上是List<Map<String, String>>,你想要的是看一个值是否在列表中任何一个映射的任何值中表示,那么你可以从中取出值地图:

aliasQueryResults*.values().flatten().contains(newTokenValuesMap.get("{BASEALIAS}"))

示例:

groovy:000> mylist = []
===> []
groovy:000> mylist << [a:'asdf', b:'zxcv', c:'qwer']
===> [[a:asdf, b:zxcv, c:qwer]]
groovy:000> mylist << [d:'xcvb',e:'wert', f:'sdfg']
===> [[a:asdf, b:zxcv, c:qwer], [d:xcvb, e:wert, f:sdfg]]
groovy:000> mylist*.values()
===> [[asdf, zxcv, qwer], [xcvb, wert, sdfg]]
groovy:000> mylist*.values().flatten()
===> [asdf, zxcv, qwer, xcvb, wert, sdfg]
groovy:000> mylist*.values().flatten().contains('asdf')
===> true