diff --git a/e2e/native-esm/__tests__/native-esm.test.js b/e2e/native-esm/__tests__/native-esm.test.js index 494d67e62146..0d2536a10fa0 100644 --- a/e2e/native-esm/__tests__/native-esm.test.js +++ b/e2e/native-esm/__tests__/native-esm.test.js @@ -184,7 +184,7 @@ test('require of ESM should throw correct error', () => { }); test('can mock module', async () => { - jestObject.unstable_mockModule('../mockedModule.mjs', () => ({foo: 'bar'}), { + jestObject.mockModule('../mockedModule.mjs', () => ({foo: 'bar'}), { virtual: true, }); diff --git a/packages/jest-environment/src/index.ts b/packages/jest-environment/src/index.ts index 7a6e1cc8f7ef..0f0bd6500075 100644 --- a/packages/jest-environment/src/index.ts +++ b/packages/jest-environment/src/index.ts @@ -173,9 +173,9 @@ export interface Jest { /** * Mocks a module with the provided module factory when it is being imported. */ - unstable_mockModule( + mockModule( moduleName: string, - moduleFactory: () => Promise | T, + moduleFactory?: () => Promise | T, options?: {virtual?: boolean}, ): Jest; /** diff --git a/packages/jest-runtime/src/index.ts b/packages/jest-runtime/src/index.ts index 1dc2c9a56322..dc0929c926d1 100644 --- a/packages/jest-runtime/src/index.ts +++ b/packages/jest-runtime/src/index.ts @@ -716,6 +716,8 @@ export default class Runtime { async unstable_importModule( from: string, moduleName?: string, + // TODO: implement this + _isImportActual = false, ): Promise { invariant( runtimeSupportsVmModules, @@ -2041,16 +2043,22 @@ export default class Runtime { this.setMock(from, moduleName, mockFactory, options); return jestObject; }; - const mockModule: Jest['unstable_mockModule'] = ( + const mockModule: Jest['mockModule'] = ( moduleName, mockFactory, options, ) => { - if (typeof mockFactory !== 'function') { - throw new Error('`unstable_mockModule` must be passed a mock factory'); + if (mockFactory !== undefined) { + this.setModuleMock(from, moduleName, mockFactory, options); + return jestObject; } - this.setModuleMock(from, moduleName, mockFactory, options); + const moduleID = this._resolver.getModuleID( + this._virtualMocks, + from, + moduleName, + ); + this._explicitShouldMockModule.set(moduleID, true); return jestObject; }; const clearAllMocks = () => { @@ -2161,6 +2169,7 @@ export default class Runtime { isolateModules, mock, mocked, + mockModule, requireActual: this.requireActual.bind(this, from), requireMock: this.requireMock.bind(this, from), resetAllMocks, @@ -2197,7 +2206,6 @@ export default class Runtime { setTimeout, spyOn, unmock, - unstable_mockModule: mockModule, useFakeTimers, useRealTimers, };