chai-signals

chai に js-signals ライブラリのアサーションを追加します。
次のアサーションを chai に追加します
- dispatched()
- dispatchedWith()
使用方法
インストール
重要: このパッケージの期待値は js-signals のシグナルに依存しています。
npm install chai-signals
作成
まず、関心のあるシグナルを定義します。
var signal = new signals.Signal();
var signalSpy = chai.signals.spyOnSignal(signal);
var signalSpies = chai.signals.createSignalSpyObj([signal1, signal2]);
シグナルのフィルタリング
登録するディスパッチを指定するブール関数を渡すことができます。
var signal = new signals.Signal();
var signalSpy = chai.signals.spyOnSignal(signal).matching(function (dispatchInfo) {
return dispatchInfo !== null;
});
signal.dispatch(); // ignored
signal.dispatch(5); // registered
期待値
スパイを定義したら、テストで期待値を設定できます。
expect(signalSpy).to.have.been.dispatched(); // the spy's signal has been dispatched at least once
expect(signalSpy).to.have.been.dispatched(n); // the spy's signal has been dispatched n times
expect(signal).to.have.been.dispatched(); // the signal has been dispatched at least once
expect(signal).to.have.been.dispatched(n); // the signal has been dispatched n times
expect(signalSpy).to.not.have.been.dispatched(); // the spy's signal has not been dispatched at all
expect(signalSpy).to.not.have.been.dispatched(n); // the spy's signal has not been dispatched n times
expect(signal).to.not.have.been.dispatched(); // the signal has not been dispatched at all
expect(signal).to.not.have.been.dispatched(n); // the signal has not been dispatched at all
expect(signalSpy).to.have.been.dispatchedWith(n); // the spy's signal has been dispatched using n
expect(signalSpy).to.have.been.dispatchedWith(m, n); // the spy's signal has been dispatched using (m, n)
expect(signalSpy).to.have.been.dispatchedWith(<object>); // the spy's signal has been dispatched with using object
expect(signal).to.have.been.dispatchedWith(n); // the signal has been dispatched using n
expect(signal).to.have.been.dispatchedWith(m, n); // the signal has been dispatched using (m, n)
expect(signal).to.have.been.dispatchedWith(<object>); // the signal has been dispatched with using object
expect(signalSpy).to.not.have.been.dispatchedWith(n); // the spy's signal has not been dispatched using n
expect(signalSpy).to.not.have.been.dispatchedWith(m, n); // the spy's signal has not been dispatched using (m, n)
expect(signalSpy).to.not.have.been.dispatchedWith(<object>); // the spy's signal has not been dispatched with using object
expect(signal).to.not.have.been.dispatchedWith(n); // the signal has not been dispatched using n
expect(signal).to.not.have.been.dispatchedWith(m, n); // the signal has not been dispatched using (m, n)
expect(signal).to.not.have.been.dispatchedWith(<object>); // the signal has not been dispatched with using object
AMD
chai-signals
を AMD (非同期モジュール定義) モジュールとして使用できます。
chai-signals
は JS-Signals に依存するため、まず signals
パスを定義します。
require.config({
paths: {
signals: 'components/js-signals/signals',
chai-signals: 'components/chai-signals/lib/chai-signals'
}
});
その後、次のように Chai
テストで使用します。
define(['myClass', 'chaiSignals'], function(myClass, chaiSignals) {
it('should signal completed', function () {
chai.signals.spyOnSignal(myClass.completed);
myClass.doSomething();
expect(myClass.completed).to.have.been.dispatched();
});
});
テストを実行するために karma を使用している場合は、各テストファイルに chai.use(chaiSignals);
を含めるようにしてください。
例
使用方法についてはテストを参照してください。
開発
node.js、bower をインストールします。
npm install
bower install
npm test
ライセンス
このコードは MIT ライセンスの元に配布されています。
クレジット
このプラグインは Adam Nowotny の jasmine-signals に基づいています。