如何使用 stretr/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_amount是一个decimal. 然而,比较测试用例中的两者与指数等略有不同。


我如何正确断言这些值与 stretr/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

  }


aluckdog
浏览 74回答 1
1回答

德玛西亚99

您可以使用decimal.Equal以便可以使用库比较值以返回 abool然后只测试该结果是否为true.像这样:require.Equal(t, decimal.NewFromFloat(6000.00).Equal(sum_amount), true)另外,您可以检查结果是否正在true使用,而不是比较两个值是否相等require.True这是最终结果:require.True(t, decimal.NewFromFloat(6000.00).Equal(sum_amount))
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go