我已经听过'SIGTERM'信号以进行正常关机:
// 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被模拟函数替代了,因为我曾尝试调用process.exit(0),该进程仍在运行。但是process.kill立即杀死了我的进程。
为什么会这样?
如何正确进行测试? (我想测试一下process.on('SIGTERM'))