web-dev-qa-db-ja.com

チャイを使用して浮動小数点の等式をテストするにはどうすればよいですか?

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
25
zigg

私もこれを探していましたが、この質問とは別に、closeToの追加につながった機能リクエストに関して このディスカッション も見つかりました。これにより、値と+/-デルタを指定できるため、基本的に、結果を確認する精度を指定できます。

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

または

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

もちろん、これは6.665から6.667までの任意の数を承認するため、完全ではありません。

38
GolezTrol

withinアサーションを使用して、浮動小数点数が意図した結果に近いかどうかを確認できます。

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