单元测试事件驱动的javascript

Ray*_*nos 7 javascript events unit-testing asynchronous node.js

我正在用node.js编写服务器端应用程序,并希望包含单元测试.有一件事我与挣扎是单元测试的好方法EventEmittersetInterval/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)
            )
        );
    },
    ...
}
...
Run Code Online (Sandbox Code Playgroud)

(发射会触发事件)

[编辑]

我开始在https://github.com/ry/node/tree/master/test/simple阅读一些EvevntEmitter测试,它帮助我看看如何解决这个问题.

Ray*_*nos 4

就我个人而言,对我帮助最大的是阅读 Node.js 本身的测试(我只阅读了其中大约一半)。

这让我对如何测试异步代码有了很好的了解。

感谢 @tmdean 指出了如何测试异步代码的另一个示例。