我正在使用 Typescript 和 Jest。我有一个通过 npm cli 调用的作业文件(例如 npm run exec-my-job),内容如下所示
export async function exec() {
try {
... execute code
process.exit(0);
} catch (e: unknown) {
... handle result
process.exit(1);
}
}
(async () => {
await exec();
})();
我如何在 Jest 中测试这个?我已经尝试过以下
...
it('runs job properly', async () => {
...
const mockExit = jest.spyOn(process, 'exit').mockImplementation(() => { return undefined as never });
await require('./exec-my-job');
expect(mockExit).toHaveBeenCalledWith(0);
});
但似乎模拟从未注入我的电话,因为它反复失败
Expected number of calls: >= 1
Received number of calls: 0
> 39 | expect(mockExit).toHaveBeenCalled();
| ^
40 | });
我可以通过调试看到它实际上是在“process.exit(0)”行,但它似乎与我通过“require”调用命令的方式有关,它没有捕获结果。
有任何想法吗?