chai-bn
Chai
アサーションは bn.js ライブラリを使用して任意精度の整数と比較することができます。 chai-bignumber (bignumber.js ライブラリを使用)からフォークしました。
インストール
npm install --save-dev chai-bn
使用法
const chai = require('chai');
const BN = require('bn.js');
// Enable and inject BN dependency
chai.use(require('chai-bn')(BN));
アサーション
プロパティがアサーションチェーンの一部として設定されている場合、次のアサーションメソッドが提供され、既存の組み込みアサーションをオーバーライドしますbignumber
- equal/equals/eq
- above/gt/greaterThan
- least/gte
- below/lt/lessThan
- most/lte
- closeTo
さらに一連の追加アサーションプロパティも提供されています
- negative
- zero
実際の値(アサートされる値)と、想定される値(実際の値と一致すると想定される値)はどちらのインスタンスでもかまわず、有効な数値に変換できる BN
または文字列にすることができます。これは、実際の値と想定される値の両方の JavaScript 数値を BigNumber
インスタンスに自動的に変換する chai-bignumber との重要な違いです。
BDD スタイルのみ(expect
または should
)がサポートされています。
例
メソッド
const actual = new BN('100000000000000000').plus(new BN('1'));
const expected = '100000000000000001';
actual.should.be.a.bignumber.that.equals(expected);
expect(actual).to.be.a.bignumber.that.is.at.most(expected);
(new BN('1000')).should.be.a.bignumber.that.is.lessThan('2000');
プロパティ
(new BN('-100')).should.be.a.bignumber.that.is.negative;
expect(new BN('1').sub(new BN('1'))).to.be.a.bignumber.that.is.zero;
いくつかの Chai
プロパティ(たとえば that.is
チェーン)は可読性を高める以外の効果はなく、冗長さをそれほど望まない場合は削除できます。