覆盖自动模拟的最佳方法?
Best way to override auto-mocks?
我需要自动模拟所有模块功能,除了那些我想手动模拟的功能。
我想使用 jest.mock() 的工厂参数来执行此操作,类比来自 jest docs (https://jestjs.io/docs/jest-object#jestrequireactualmodulename) 的示例,如下所示:
jest.mock('someModule', () => ({
...jest.requireMock('someModule'), // This doesn't work :(
someFunction: jest.fn(() => 'someValue')
}));
我希望 jest.requireMock(moduleName) 能像 jest.requireActual(moduleName) 那样做,但结果是
RangeError: Maximum call stack size exceeded
是否可以通过这种方式实现我的目标?
如果不是,这样做的最佳做法是什么?
开玩笑:24.9.0,ts-开玩笑:26.4.1
jest.mock
要么是自动要么是手动,不能两者都是。
可以使用 jest.createMockFromModule
创建自动模拟,然后进行扩展。这在 __mocks__
中的可重用模拟中很有用,但在测试级别通常不需要。
除非在导入时使用模拟并且需要托管,否则每个测试套件执行此操作的方法是:
jest.mock('someModule');
beforeEach(() => {
someModule.someFunction.mockReturnValue('someValue')
});
I expect jest.requireMock(moduleName) to do the trick
这不应该是预期的,因为模拟是在模拟中导入的,这会导致递归。
我需要自动模拟所有模块功能,除了那些我想手动模拟的功能。 我想使用 jest.mock() 的工厂参数来执行此操作,类比来自 jest docs (https://jestjs.io/docs/jest-object#jestrequireactualmodulename) 的示例,如下所示:
jest.mock('someModule', () => ({
...jest.requireMock('someModule'), // This doesn't work :(
someFunction: jest.fn(() => 'someValue')
}));
我希望 jest.requireMock(moduleName) 能像 jest.requireActual(moduleName) 那样做,但结果是
RangeError: Maximum call stack size exceeded
是否可以通过这种方式实现我的目标? 如果不是,这样做的最佳做法是什么?
开玩笑:24.9.0,ts-开玩笑:26.4.1
jest.mock
要么是自动要么是手动,不能两者都是。
可以使用 jest.createMockFromModule
创建自动模拟,然后进行扩展。这在 __mocks__
中的可重用模拟中很有用,但在测试级别通常不需要。
除非在导入时使用模拟并且需要托管,否则每个测试套件执行此操作的方法是:
jest.mock('someModule');
beforeEach(() => {
someModule.someFunction.mockReturnValue('someValue')
});
I expect jest.requireMock(moduleName) to do the trick
这不应该是预期的,因为模拟是在模拟中导入的,这会导致递归。