我正在使用node.js编写服务器端应用程序,并希望包括单元测试。我遇到的一个问题是如何对EventEmitter
和setInterval/setTimout
进行单元测试。
我有哪些选项可以对异步服务器端JavaScript进行单元测试?
我知道我可以只需将另一个侦听器附加到作为测试函数的EventEmitter上,但是如何确保测试函数运行?部分单元测试的目的是确保单元测试的每个部分都运行。
我可以自己使用setTimeout,但这似乎是一个不好的解决方案。
如果有帮助的话,这里是一些我正在尝试测试的示例代码。
...
function init(param) {
...
// run update entities periodically
setInterval(this._updateEntities.bind(this, param.containerFull),
1000 / param.fps);
...
}
...
EntityUpdater.prototype = {
...
"_updateEntities": function updateEntitiesfunc(fn) {
this._tickEmitter.emit(
"tick",
new dataContainer.DataContainer(this.getEntityCount())
.on(
"full", fn.bind(this)
)
);
},
...
}
...
(emit将触发事件)
[编辑]
我开始阅读https://github.com/ry/node/tree/master/test/simple上的一些EventEmitter测试,这有助于我了解如何处理这个问题。