簡體   English   中英

如何用stretchr/testify測試小數的相等性?

[英]How to test equality of a decimal with stretchr/testify?

我無法運行單元測試來檢查decimal值是否符合我的預期。 這是我嘗試過的:

func Test_example(t *testing.T) {
    t.Run("test if two decimals are equal", func(t *testing.T) {
        sum_amount := decimal.NewFromFloat(1000.00)
                          .Add(decimal.NewFromFloat(5000.00))
    
        require.Equal(t, decimal.NewFromFloat32(6000.00), sum_amount))
    })
}

如您所見, sum_amountdecimal 然而,在測試用例中比較兩者的結果與指數等略有不同。

我如何正確斷言這些值與stretchr/testify 相等?

例如這里的差異:

Diff:
--- Expected
+++ Actual
@@ -4,6 +4,6 @@
    abs: (big.nat) (len=1) {
-   (big.Word) 6
+   (big.Word) 6000
      }
    }),
- exp: (int32) 3
+ exp: (int32) 0
  }

您可以使用decimal.Equal以便可以使用庫比較值以返回bool ,然后僅測試該結果是否為true

像這樣:

require.Equal(t, decimal.NewFromFloat(6000.00).Equal(sum_amount), true)

此外,您可以使用require.True檢查結果是否為true ,而不是比較兩個值是否相等

這是最終結果:

require.True(t, decimal.NewFromFloat(6000.00).Equal(sum_amount))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM