如何在节点中测试事件发射器 [英] How to test event emitters in node
本文介绍了如何在节点中测试事件发射器的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
让我们说我想写这个简单的任务.但我想编写一个测试来验证这一点:
Lets say I want to write this simple task. But I want to write a test validating that:
- 此任务发射对象.
- 对象具有属性名称.
我正在用摩卡咖啡和chai Expect测试.
I'm testing with mocha and chai expect.
先谢谢了.我已经尝试过想到的所有可能的变体,但无法提出解决方案.
Thanks in advance. I've tried every possible variant that came to mind, but could not come up with a solution.
var util = require('util'),
EventEmitter = require('events').EventEmitter;
function SomeTask() {
var self = this;
setInterval(function() {
self.emit('data', { name: 'name' });
}, 5000);
}
util.inherits(SomeTask, EventEmitter);
module.exports = SomeTask;
推荐答案
以下是使用间谍的示例. https://github.com/mochajs/mocha/wiki/Spies
Here's an example using spies. https://github.com/mochajs/mocha/wiki/Spies
var sinon = require('sinon');
var EventEmitter = require('events').EventEmitter;
describe('EventEmitter', function(){
describe('#emit()', function(){
it('should invoke the callback', function(){
var spy = sinon.spy();
var emitter = new EventEmitter;
emitter.on('foo', spy);
emitter.emit('foo');
spy.called.should.equal.true;
})
it('should pass arguments to the callbacks', function(){
var spy = sinon.spy();
var emitter = new EventEmitter;
emitter.on('foo', spy);
emitter.emit('foo', 'bar', 'baz');
sinon.assert.calledOnce(spy);
sinon.assert.calledWith(spy, 'bar', 'baz');
})
})
})
这篇关于如何在节点中测试事件发射器的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文