gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 23:52:14 24 4
gpt4 key购买 nike

对于我正在实现的测试用例,我需要模拟 process.cwd()功能。在测试用例中,我按如下方式实现了它:

process.cwd = jest.fn(() => '/base/dir')

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

最佳答案

process Jest 中的对象test 不是真实的,但它在测试运行期间也是一致的,所以如果您的代码需要 process直接然后你仍然可以模拟 process.cwd 之类的东西:

代码.js

const process = require('process');

export const func = () => process.cwd();

代码.test.js

const process = require('process');
import { func } from './code';

test('func', () => {
const spy = jest.spyOn(process, 'cwd');
spy.mockReturnValue('mocked value');

expect(func()).toBe('mocked value'); // Success!
});

...它也可以模拟整个 process像这样的模块:

代码.test.js

import { func } from './code';

jest.mock('process', () => ({
cwd: () => 'mocked value'
}));

test('func', () => {
expect(func()).toBe('mocked value'); // Success!
});

(他们谈论的问题 here 是您不能在测试期间模拟 process.cwd 并让模拟影响其他核心 Node.js 模块行为,例如 path.resolve )。

关于mocking - 如何用 Jest 模拟 process.cwd() 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55906920/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com