2016-09-18 85 views
2

所以我有一些基於我的Express服務器運行一些測試的摩卡測試。摩卡服務器清理

我在我的server.js文件中運行以下代碼來處理在服務器關閉時完成的一些清理工作(正常關閉服務器,記錄一些信息,停止本地數據庫(如果存在)等)。

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

運行諸如nodemon server.js之類的命令時,此功能非常完美。當我點擊命令c時,它會處理清理過程,一切都完美無缺。

問題是我想在摩卡測試完成之後運行它。目前在運行mocha時,它會運行我測試目錄中的所有測試。我曾想過在我最後的Mocha測試文件中像after函數一樣運行該函數。問題是我有多個Mocha運行的測試文件,如果我決定只運行一個測試文件,那麼該函數將永遠不會運行。我想我可能可以在每個測試文件的after命令中運行它,但這似乎並不是最合理的方法。

我該如何處理?是否有一個process.on摩卡完成或類似的東西?有沒有更好的方法來處理這個問題?

+1

你可以聽到'process.on('exit',function(){});' – Alex

+0

@Alex Great看起來像這樣工作的退出事件!隨時留下一個答案,我會接受它。 –

+1

太棒了,我很高興爲你工作:) – Alex

回答

3

process.on('exit', function() {}),然後執行該事件處理程序內的清理代碼將部署你的程序的關閉之前,這是因爲SIGINT後的退出信號發出,exit是當一個進程關閉發生的最後一個事件下。