bn-chai

bn-chai 使用關於 bn.js 小數的斷言來擴充 Chai

安裝

npm install -s bn-chai

設定

var chai = require('chai');
var BN = require('bn.js');
var bnChai = require('bn-chai');
chai.use(bnChai(BN));

用法

當比較兩個 bn.js 小數 bn1bn2 時,你可以不用這樣做:

expect(bn1.eq(bn2)).to.be.true;

你可以改用這種方式:

expect(bn1).to.eq.BN(bn2);

當比較一個 bn.js 小數與一個內聯常數時,這個外掛也相當方便,所以你可以不用這樣寫:

expect(bn1.eq(new BN('1'))).to.be.true;

你只需簡單地寫成:

expect(bn1).to.eq.BN(1);

這樣更簡單且更具可讀性。

斷言

eq

斷言目標與給定的物件相等

expect(new BN('1')).to.eq.BN(1);
expect(new BN('1')).not.to.eq.BN(0);

lt

斷言目標小於給定的物件。

expect(new BN('0')).to.be.lt.BN(1);
expect(new BN('1')).not.to.be.lt.BN(1);

lte

斷言目標小於等於給定的物件。

expect(new BN('0')).to.be.lte.BN(1);
expect(new BN('1')).to.be.lte.BN(1);
expect(new BN('2')).not.to.be.lte.BN(1);

gt

斷言目標大於給定的物件。

expect(new BN('1')).to.be.gt.BN(0);
expect(new BN('1')).not.to.be.gt.BN(1);

gte

斷言目標大於等於給定的物件。

expect(new BN('1')).to.be.gte.BN(0);
expect(new BN('1')).to.be.gte.BN(1);
expect(new BN('1')).not.to.be.gte.BN(2);

negative

斷言目標為負數

expect(new BN('-1')).to.be.negative;
expect(new BN('1')).not.to.be.negative;

even

斷言目標為偶數

expect(new BN('2')).to.be.even;
expect(new BN('1')).not.to.be.even;

odd

斷言目標為奇數

expect(new BN('1')).to.be.odd;
expect(new BN('2')).not.to.be.odd;

zero

斷言目標等於 0。

expect(new BN('0')).to.be.zero;
expect(new BN('1')).not.to.be.zero;

混合使用 BN、數字和字串

你可以自由地混合使用 BN、數字和字串。

expect(new BN('1')).to.eq.BN(new BN('1'));
expect(new BN('1')).to.eq.BN('1');
expect(new BN('1')).to.eq.BN(1);

expect('1').to.eq.BN(new BN('1'));
expect('1').to.eq.BN('1');
expect('1').to.eq.BN(1);

expect(1).to.eq.BN(new BN('1'));
expect(1).to.eq.BN('1');
expect(1).to.eq.BN(1);