我正在使用 node.js 编写服务器端应用程序,并希望包括单元测试。我正在努力解决的一件事是对 EventEmitter
和 setInterval/setTimout
我有哪些选项可以对异步服务器端 javascript 进行单元测试?
我知道我可以将另一个监听器附加到作为测试功能的 EventEmitter,但是我如何保证测试功能一直运行?单元测试的一部分是保证单元测试的每一部分都运行。
我可以自己使用 setTimeout 但这似乎是一个 hackish 解决方案。
如果它有帮助,这里是我正在尝试测试的一些示例代码。
...
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 阅读一些 EvevntEmitter 测试它帮助我了解如何解决这个问题。
最佳答案
我建议您查看 Jasmine为您的测试。它是为在浏览器环境之外运行测试而构建的,它对诸如 setTimeout
之类的调用进行 stub ,为您提供一个假时钟,您可以在闲暇时向前移动时间以测试任何与时间相关的内容。
关于javascript - 单元测试事件驱动的javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4413221/