From 02c6cbbb358f8ab6607f0060665b384f3c4117fc Mon Sep 17 00:00:00 2001 From: 9aoy <9aoyuao@gmail.com> Date: Mon, 15 Jun 2026 14:32:55 +0800 Subject: [PATCH] fix(core): mock async externals in commonjs output --- .../core/src/core/plugins/mockRuntimeCode.js | 25 ++++++++++++++----- 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/packages/core/src/core/plugins/mockRuntimeCode.js b/packages/core/src/core/plugins/mockRuntimeCode.js index a81662cb2..deaa74aa6 100644 --- a/packages/core/src/core/plugins/mockRuntimeCode.js +++ b/packages/core/src/core/plugins/mockRuntimeCode.js @@ -76,7 +76,7 @@ const defineExportsWithCjsInterop = ( __webpack_require__, ) => { __webpack_require__.r(__webpack_exports__); - for (const key in moduleObj) { + for (const key of Object.getOwnPropertyNames(moduleObj)) { __webpack_require__.d(__webpack_exports__, { [key]: () => moduleObj[key], }); @@ -88,6 +88,14 @@ const defineExportsWithCjsInterop = ( } }; +const createMockedModule = (originalModule, isSpy) => { + return ( + globalThis.RSTEST_API?.rstest?.mockObject(originalModule, { + spy: isSpy, + }) || originalModule + ); +}; + //#region rs.unmock __webpack_require__.rstest_unmock = (id, request) => { restoreOriginalFactory(id); @@ -202,17 +210,22 @@ const getMockImplementation = (mockType = 'mock') => { `[Rstest] rs.${mockType}('${id}', { ${optionName}: true }) failed: cannot load original module`, ); } - const originalModule = requiredModule; - const mockedModule = - globalThis.RSTEST_API?.rstest?.mockObject(originalModule, { - spy: isSpy, - }) || originalModule; + const mockedModule = isPromise(requiredModule) + ? requiredModule.then((originalModule) => + createMockedModule(originalModule, isSpy), + ) + : createMockedModule(requiredModule, isSpy); const finalModFactory = function ( __webpack_module__, __webpack_exports__, __webpack_require__, ) { + if (isPromise(mockedModule)) { + __webpack_module__.exports = mockedModule; + return; + } + if (isMockRequire) { __webpack_module__.exports = mockedModule; return;