2017-10-14 33 views
1

我不確定爲什麼以下不起作用。即使輸出相同,斷言在常規中失敗

我簡單地將一個響應與一系列值進行比較。響應來自一個JSON其中前端成本的樣子:

json.groups.options.cost.flatten() 

20, 25, 40, 50 

但是當你抓住它,它是作爲[[20.0000, 25.0000, 40.0000, 50.0000]]

所以我夷爲平地,像這樣的反應顯示

此輸出:

[20.0000, 25.0000, 40.0000, 50.0000] 

現在我想比較一些公頃以上rdcoded值。所以我創造了這個變量:

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方法以原始方式工作?

回答

0

它並沒有聲明,因爲您試圖將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]

簡單地比較