如何用 Jest 模拟 process.cwd() 函数?

nid*_*kil 5 mocking jestjs

对于我正在实现的测试用例,我需要模拟该process.cwd()函数。在测试用例中我的实现如下:

process.cwd = jest.fn(() => '/base/dir')
Run Code Online (Sandbox Code Playgroud)

process.cwd()在测试用例中调用时,它会按预期工作。在我正在测试的模块中,它返回原始值。我究竟做错了什么?

nid*_*kil 2

事实证明这是一个已知的 Jest问题

是的; 看起来这是因为测试中的流程对象不是真实的,而是一个模拟版本。由于所有 Node 模块都需要来自外部上下文(我们尝试在 #4970 中修复此问题,但由于它还不够成熟,我们不得不回滚),因此当您重写 process.cwd 时,它不是真正的。