chai-almost
chai の拡張機能には、「ほぼ」等しい(ある許容範囲内にある)数字を許可するアサーションがあります。これは、特に浮動小数点の丸め誤差やその他の近似処理を考慮する場合に役立ちます。
インストール
npm install chai-almost --save-dev
使用
使用するには、モジュールをインポートしてから chai.use
で呼び出します。
const chai = require('chai');
const chaiAlmost = require('chai-almost');
chai.use(chaiAlmost());
デフォルトでは、chai-almost
は 1 x 10-6 の許容差を許可します。これにより、ほとんどの丸め誤差は安全に処理されますが、依然としてほとんどの真の不平等は拒否されます。呼び出し時にモジュールに引数として目的の許容値を渡すことでこの値をオーバーライドできます
chai.use(chaiAlmost(0.1));
アサーション
almost
アサーションは、ディープまたはシャロー等式を使用してチェーンで適用できます
// shallow
expect(3.9999999).to.almost.equal(4); // passes
expect(3.9).to.almost.equal(4); // fails
expect(4.0000001).to.be.almost(4); // passes
expect(4.1).to.not.be.almost(4); // passes
// deep
expect({ taco: 'pastor', num: 3.9999999 }).to.almost.eql({ taco: 'pastor', num: 4 }); // passes
expect([[1, 2, 2.9999999], 1.0000001]).to.be.deep.almost([[1, 2, 3], 1]); // passes
expect({ taco: 'pastor', num: 3.9 }).to.not.almost.eql({ taco: 'pastor', num: 4 }); // passes
数値以外に対する等式チェックは変更されません
expect('taco').to.almost.equal('taco'); // still passes
expect({ x: 5 }).to.be.almost({ x: 5 }); // still fails (shallow equality)
expect(['tacos', 2, 3]).to.be.deep.almost(['burritos', 2, 2.9999999]); // still fails
特定の許容差
シャローまたはディープ等式に対する単一インスタンスのカスタム許容差は、almost
への第 2 引数として渡すことができます
expect(10).to.be.almost(15, 10) // passes
expect([4, 2, 5]).to.be.deep.almost([3, 4, 7], 3) // passes