Javascript 节点进程在调用';process.kill(';SIGTERM';)';,虽然我一直在听;SIGTERM";信号
我听到了“SIGTERM”信号,要做一个优雅的关机:Javascript 节点进程在调用';process.kill(';SIGTERM';)';,虽然我一直在听;SIGTERM";信号,javascript,node.js,jestjs,Javascript,Node.js,Jestjs,我听到了“SIGTERM”信号,要做一个优雅的关机: // snippet of server.js process.on('SIGTERM', () => { console.log('I will close database here.') process.exit(0) }) 我使用Jest进行测试,下面是代码: describe('on SIGTERM', () => { beforeAll(() => {
// snippet of server.js
process.on('SIGTERM', () => {
console.log('I will close database here.')
process.exit(0)
})
我使用Jest进行测试,下面是代码:
describe('on SIGTERM', () => {
beforeAll(() => {
process.exit = jest.fn(); // substituted by mock function
return require('../server'); // run server.js
});
it('should exit with code 0', async () => {
process.kill(process.pid, 'SIGTERM'); // the code killed my jest process immediately
expect(process.exit).toHaveBeenCalledWith(0);
})
})
以下是错误消息:
npm运行测试:服务器服务器/测试/server.spec.js
错误命令失败,退出代码为143
我确信process.exit已被mock函数替换,因为我已尝试调用process.exit(0),该进程保持活动状态。但是process.kill立即终止了我的进程
为什么会发生这种情况
我怎样才能正确地进行测试?(我想测试这个过程。在('SIGTERM'))有趣!!!!你在windows上吗?不,我是macOS。你的
模块导出在server.js中是什么样子的?您可能只是需要您的服务器代码,而不是执行它。您找到解决方案了吗?