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。