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 的第二个参数传入

expect(10).to.be.almost(15, 10)                   // passes
expect([4, 2, 5]).to.be.deep.almost([3, 4, 7], 3) // passes