chai-almost

travis npm node

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