bn-chai

bn-chai 扩展了 Chai,提供了关于 bn.js 十进制数的断言。

安装

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);