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
的第二个参数传入
expect(10).to.be.almost(15, 10) // passes
expect([4, 2, 5]).to.be.deep.almost([3, 4, 7], 3) // passes