我试图断言唯一的问题是订单可能是随机的,所以我不能进行正常的比较所以我需要使用.contains
这个问题,这是下面唯一的问题不行。
List<Map> aliasQueryResults
Map<String, String> newTokenValuesMap
assert aliasQueryResults.contains(newTokenValuesMap.get("{BASEALIAS}"))
newTokenValuesMap.get("{BASEALIAS}")
很好,它返回字符串,所以这不是这次尝试的问题。
答案 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