2016-09-18 46 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是当一个进程关闭发生的最后一个事件下。