简体   繁体   中英

How can I test floating-point equality using chai?

We're using Chai's BDD API to write unit tests.

How can we assert floating point equality?

For example, if I try to make this assertion to check for a 66⅔% return value:

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

I get this failure:

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

I was looking for this too, and apart from this question, I also found this discussion regarding a feature request that led to the addition ofcloseTo . With that you can specify a value and a +/- delta, so basically it lets you specify the precision with which to check the result.

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

or

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

or

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

It's not perfect of course, because this will approve any number from 6.665 to 6.667.

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

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM