0

我正在使用 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”调用命令的方式有关,它没有捕获结果。

有任何想法吗?

4

0 回答 0