2016-09-18 3 views
2

エクスプレスサーバーに基づいていくつかのテストを実行するモカテストがあります。モカサーバーのクリーンアップ

server.jsファイルで次のコードを実行して、サーバーのシャットダウン(サーバーのシャットダウン、一部の情報の記録、存在する場合はローカルDBの停止など)で行われるクリーンアップ作業を処理します。

process.on ('SIGINT', function() { 
    gracefulShutdown(); 
}); 

nodemon server.jsのようなコマンドを実行すると完全に機能します。コマンド-cを押すとクリーンアップが処理され、すべてが完全になります。

問題これは、モカのテストが完了した後に実行したいのですが。現在、mochaを実行している場合、テストディレクトリのすべてのテストを実行します。私は最後のMochaテストファイルのafter関数のようにその関数を実行することを考えました。問題は、Mochaが動作する複数のテストファイルがあることです.1つのテストファイルだけを実行すると、その機能は実行されません。私はおそらく私はそれぞれのテストファイルの後のコマンドでそれを実行することができたと思うが、それはそれについて行く最も論理的な方法ではないようだ。

どうすれば対応できますか? process.onモカが完成しているのでしょうか?これを処理するより良い方法はありますか? SIGINT後、出口信号が放出されるので、それが終了する前に

+1

あなたは 'process.on( 'exit'、function(){})の終了イベントを聞くことができました;' – Alex

+0

@Alex Greatはそれがうまくいったようです!自由に答えを残してください。私はそれを受け入れます。 –

+1

偉大な、私はあなたのために働いてうれしいよ:) – Alex

答えて

3

process.on('exit', function() {})を聴くと、そのイベントハンドラの内部であなたのクリーンアップコードを実行するにはあなたのプログラムを処分します、これは、exitは、プロセスが終了したときに発生する最後のイベントですダウン。

関連する問題