如何用stretchr/证人测试小数的等式?



我在运行单元测试以检查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_amount是一个decimal。然而,在测试用例中比较两者在指数等方面的结果略有不同。

如何正确地断言这些值与stretchr/witness相等?

。以下是区别:

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))

最新更新