chai-eventemitter2
これは、nodeスタイルのEventEmittersをテストするためのchaiプラグインです。
互換性
- ECMAScript 2020 (Node.js 14以降)
インストール
-
プラグインのインストール
-
NPM を使用
npm install -D chai-eventemitter2
-
Yarn を使用
yarn add -D chai-eventemitter2
-
-
テスト設定に追加
const chai = require('chai'); const eventemitter2 = require('chai-eventemitter2'); chai.use(eventemitter2());
使用方法
Expect API を使用
const emitter = new EventEmitter();
expect(emitter).to.be.an.eventEmitter;
expect(emitter)
.to.emit('foo')
.to.emit('bar', {count: 2})
.to.emit('baz', {withArgs: ['X', 'Y', 'Z']})
.to.emit('error', {count: 0})
.on(() =>
{
emitter.emit('foo');
emitter.emit('bar');
emitter.emit('bar');
emitter.emit('baz', 'X', 'Y', 'Z');
});
API
Assertion.eventEmitter
アサーション対象のオブジェクトが、そのプロパティに基づいて EventEmitter であることを検証します。(つまり、on
とemit
メソッドなどを持つオブジェクトでなければなりません)
例については、使用方法セクションを参照してください。
Assertion.emit(event[, options])
期待されるイベントを登録します。
event: string
イベント名。options.count: number|{min: number?, max: number?}
イベントが発生する回数を指定します。固定値または範囲を指定できます。[デフォルト=1]-
option.argsMatch: 'deep'|'exact'|'soft'
withArgs
オプションに期待される引数の配列を渡す場合、このオプションを使用して、実際のイベント引数を期待値とどのように比較するかを決定できます。'deep'
withArgs
配列の要素とイベント引数の間に深い比較を行います。'exact'
withArgs
配列の各要素とイベント引数の間に参照一致比較(===
)を行います。-
'soft'
発行されたイベントにwithArgs
配列に設定された引数が含まれていることを期待しますが、余分な引数は無視します。配列にオブジェクトが含まれている場合、発行されたイベント引数内のオブジェクトのプロパティを検索しますが、余分なプロパティは無視します。これはデフォルトの比較方法です。
withArgs
オプションが省略されているか、配列でない場合、このオプションは無視されます。 options.withArgs: any[]|(...any) => boolean
イベント引数を検証するために使用されます。配列を渡すと、プラグインはイベント引数が配列の値と一致することを期待します。コールバック関数を渡すと、イベントの引数を使用して呼び出されるため、複雑な検証を行うことができます。
Assertion.on((EventEmitter) => undefined)
イベントを発行するコードを含むコールバック関数を使用してこのメソッドを呼び出します。コールバックが呼び出され、emit
で登録されたすべてのイベントが発行されることが期待されます。そうでない場合、テストは失敗します。
例については、使用方法セクションを参照してください。
既知の問題
- ⚠️
withArgs
内の循環参照は処理しません。イベント引数に循環参照があると、テストが中断する可能性があります。 - ⚠️ 「not」フラグ(
.not
)では機能しません。count
オプションを使用してこの問題を回避できます。(つまり、イベントが0
回発行されたことをアサートします) - ⚠️ 非同期についてはテストされていません。
免責事項
fengb/chai-eventemitter に触発されました。
ライセンス
MIT