私はnode.jsを使用してサーバーサイドアプリケーションを作成しており、単体テストを含めたいと考えています。私が苦労しているのは、単体テストの良い方法です。EventEmitter
とsetInterval/setTimout
ユニットテストのイベント駆動型javascript
ユニットテストの非同期サーバーサイドJavaScriptにはどのようなオプションがありますか?
私は、テスト機能であるEventEmitterに別のリスナーを追加することはできますが、テスト機能が実行されていることをどのように確認するのですか?ユニットテストの一部は、ユニットテストの各部を確実に実行することです。
私はsetTimeoutを自分で使うことができましたが、それはハックな解決策のようです。
ここで私がテストしようとしているいくつかのexplerコードが役に立ちます。
...
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テストのいくつかを読み始め、それは私がこれについて移動する方法を確認できます。
あなたはこのブログ記事を見ましたか? http://debuggable.com/posts/unit-testing-with-node-js:4b647d40-34e4-435a-a880-3b04cbdd56cb – Tmdean
はい、私はブログを読んで、それは有用ですが、いくつかの点をカバーしています。私はちょうどループが終了するまでactaully終了しないでくださいテストに気づいた。これは、1回のsetTimeoutと1回の時間イベントのために簡単に残します。 – Raynos
私は今、出口ブロックがサーバーではなくテストに関して注目されています。すべての非同期アクションが終了した後でコードブロックを実行する方法 – Raynos