我不确定为什么以下不起作用。
我只是将响应与一系列值进行比较。响应来自一个 json,其中前端的成本看起来像:
20, 25, 40, 50
但是当你抓住它时,它显示为 [[20.0000, 25.0000, 40.0000, 50.0000]]
所以我像这样压平了响应:
json.groups.options.cost.flatten()
这输出:
[20.0000, 25.0000, 40.0000, 50.0000]
现在我想将上述内容与一些硬编码值进行比较。所以我创建了这个变量:
def cost = [20, 25, 40, 50].collect { "${it}.0000" }
这输出:
[20.0000, 25.0000, 40.0000, 50.0000]
因此,当我同时断言它们时,我希望它们起作用,但它们不起作用。
assert cost == json.groups.options.cost.flatten()
现在有趣的是,如果我执行相同的断言,但成本设置如下:
def cost = [20.0000, 25.0000, 40.0000, 50.0000]
断言通过。为什么它只适用于此,我如何才能使用该.collect
方法使其以原始方式工作?
它不会断言,因为您正在尝试List<GString>
与List<BigDecimal>
. 一般来说,在比较这些列表时,您不必担心小数点,因为:
assert [20, 25, 40, 50] == [20.0000, 25.0000, 40.0000, 50.0000]
其中第一列表是List<Integer>
,第二个是List<BigDecimal>
。
您可以检查列表的类型,json.groups.options.cost.flatten()
如果不是,List<BigDecimal>
您可以通过
json.groups.options.cost.flatten().collect { new BigDecimal(it) }
然后简单地与 [20, 25, 40, 50]
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句