我如何使用chai测试浮点相等

How can I test floating-point equality using chai?

本文关键字:测试 何使用 chai      更新时间:2023-09-26

我们使用Chai的BDD API编写单元测试。

如何保证浮点数相等?

例如,如果我尝试使用这个断言来检查66⅔%的返回值:

expect(percentage).to.equal(2 / 3 * 100.0);

我得到这个失败:

AssertionError: expected 66.66666666666667 to equal 66.66666666666666
Expected :66.66666666666666
Actual   :66.66666666666667

我也在寻找这个问题,除了这个问题之外,我还发现了这个关于导致添加closeTo的功能请求的讨论。有了它,你可以指定一个值和一个+/- delta,所以基本上它允许你指定检查结果的精度。

percentage.should.be.closeTo(6.666, 0.001);

// `closeTo` is an alias for the arguably better name `approximately`
percentage.should.be.approximately(6.666, 0.001);

expect(percentage).to.be.closeTo(6.666, 0.001)

这当然不是完美的,因为它可以批准从6.665到6.667的任何数字

within断言可用于检查浮点数是否接近其预期结果:

expect(percentage).to.be.within(66.666, 66.667);