node.js v0.12.x EventEmitter 的变化破坏了继承
node.js v0.12.x changes in EventEmitter ruins inheritance
在 node.js0.12.x 中有一些与事件模块相关的更改。
此更改使我的扩展 EventEmitter class 的代码无法运行。
这是在 node.js v0.10.35 中运行良好的代码:
teh_emitter.js:
var EventEmitter = require('events');
var util = require('util');
util.inherits(TehEmitter, EventEmitter);
function TehEmitter(){
EventEmitter.call(this);
}
TehEmitter.prototype.on('start', function (fCallback) {
fCallback();
});
module.exports = TehEmitter;
test_teh_emitter.js:
var TehEmitter = require('./teh_emitter');
describe('EventEmitter tests', function(){
describe('#emit() function', function(){
it('should fire start event', function(fCallback){
var oEmitter = new TehEmitter(fCallback);
oEmitter.emit('start', fCallback);
});
})
});
但是在 node.js v0.12.7 上它说:
0 传球(2 秒)
1 失败
1) EventEmitter tests #emit() function should fire start event:
Error: timeout of 2000ms exceeded. Ensure the done() callback is being called in this test.
我知道在 0.12.x 中应该分配:
var EventEmitter = require('events');
(虽然 require('events').EventEmitter;
应该仍然适用于向后兼容)。
但这并没有帮助。
我该如何解决这个问题?
在 node.js0.12.x 中有一些与事件模块相关的更改。 此更改使我的扩展 EventEmitter class 的代码无法运行。 这是在 node.js v0.10.35 中运行良好的代码: teh_emitter.js:
var EventEmitter = require('events');
var util = require('util');
util.inherits(TehEmitter, EventEmitter);
function TehEmitter(){
EventEmitter.call(this);
}
TehEmitter.prototype.on('start', function (fCallback) {
fCallback();
});
module.exports = TehEmitter;
test_teh_emitter.js:
var TehEmitter = require('./teh_emitter');
describe('EventEmitter tests', function(){
describe('#emit() function', function(){
it('should fire start event', function(fCallback){
var oEmitter = new TehEmitter(fCallback);
oEmitter.emit('start', fCallback);
});
})
});
但是在 node.js v0.12.7 上它说: 0 传球(2 秒) 1 失败
1) EventEmitter tests #emit() function should fire start event:
Error: timeout of 2000ms exceeded. Ensure the done() callback is being called in this test.
我知道在 0.12.x 中应该分配:
var EventEmitter = require('events');
(虽然 require('events').EventEmitter;
应该仍然适用于向后兼容)。
但这并没有帮助。
我该如何解决这个问题?