chai-bignumber
使用 bignumber.js 库比较任意精度小数的 Chai 断言。
安装
npm install --save-dev chai-bignumber
用法
var chai = require('chai');
//use default BigNumber
chai.use(require('chai-bignumber')());
//use custom BigNumber
chai.use(require('chai-bignumber')(BigNumber));
断言
以下断言方法提供,如果 bignumber
属性在断言链中被显式设置,则将覆盖现有的内置断言
- equal/equals/eq
- above/gt/greaterThan
- least/gte/greaterThanOrEqual
- below/lt/lessThan
- most/lte/lessThanOrEqual
以上方法具有以下签名:(value, dp, rm)
。其中 dp
是一个可选参数,用于指定比较双方舍入到的位数(默认情况下值不舍入),而 rm
是一个可选参数,用于指定 bignumber.js
支持的 舍入模式(默认为 BigNumber.ROUND_HALF_UP
)。
还提供了一组附加的断言属性
- finite
- integer
- negative
- zero
值可以是 number
、BigNumber
或 string
的实例,这些实例可以转换为有效的数字。仅支持 BDD 样式 (expect
或 should
) 断言。
示例
方法
var result = new BigNumber('100000000000000000').plus(1);
var expected = '100000000000000001';
result.should.be.bignumber.equal(expected);
expect(result).to.be.bignumber.at.most(expected);
'1000'.should.be.bignumber.lessThan(2000);
带舍入的方法
var BigNumber = require('bignumber.js');
(100.343).should.be.bignumber.equal(100.341, 2);
(100.349).should.be.bignumber.equal(100.341, 2, BigNumber.ROUND_DOWN);
属性
(100 / 0).should.not.be.finite;
expect(10).to.be.integer;
(-100).should.be.negative;
expect(1 - 1).to.be.zero;