How to test event emitters in node
26,689
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');
})
})
})
Author by
datogio
Updated on October 25, 2020Comments
-
datogio over 3 years
Lets say I want to write this simple task. But I want to write a test validating that:
- This task emits object.
- Object has a property name.
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;
-
hellboy over 8 yearsHow can I emit in test two events for
SUT
in required order, i.e.on('data')
andon('end')
?