Skip to content

Commit 52d07fe

Browse files
committed
fix: fix re-mocking virtual module
1 parent c185f2d commit 52d07fe

4 files changed

Lines changed: 15 additions & 4 deletions

File tree

packages/vitest/src/runtime/moduleRunner/bareModuleMocker.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -234,6 +234,10 @@ export class BareModuleMocker implements TestModuleMocker {
234234
factory: MockFactory | undefined,
235235
): void {
236236
const registry = this.getMockerRegistry()
237+
// if (id.includes('virtual-module-direct')) {
238+
// console.log('[mockPath]', { id, url, external, mockType })
239+
// console.log(registry)
240+
// }
237241

238242
if (mockType === 'manual') {
239243
registry.register('manual', originalId, id, url, factory!)

packages/vitest/src/runtime/moduleRunner/moduleMocker.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,12 @@ export class VitestMocker extends BareModuleMocker {
6767
protected invalidateModuleById(id: string): void {
6868
const mockId = this.getMockPath(id)
6969
const node = this.evaluatedModules.getModuleById(mockId)
70+
// console.log("[invalidateModuleById]", { id, mockId, node })
71+
// console.log({
72+
// "virtual-module-direct": this.evaluatedModules.idToModuleMap.get("virtual-module-direct"),
73+
// "/@id/virtual-module-direct": this.evaluatedModules.idToModuleMap.get("/@id/virtual-module-direct"),
74+
// "mock:/@id/virtual-module-direct": this.evaluatedModules.idToModuleMap.get("mock:/@id/virtual-module-direct"),
75+
// })
7076
if (node) {
7177
this.evaluatedModules.invalidateModule(node)
7278
node.mockedExports = undefined

packages/vitest/src/runtime/moduleRunner/startVitestModuleRunner.ts

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -108,8 +108,8 @@ export function startVitestModuleRunner(options: ContextModuleRunnerOptions): Vi
108108
return {
109109
code: '',
110110
file: null,
111-
id,
112-
url: id,
111+
id: resolvedMock.id,
112+
url: resolvedMock.url,
113113
invalidate: false,
114114
mockedModule: resolvedMock,
115115
}
@@ -137,6 +137,9 @@ export function startVitestModuleRunner(options: ContextModuleRunnerOptions): Vi
137137
options,
138138
otelCarrier,
139139
)
140+
// if (id.includes('virtual-module-direct')) {
141+
// console.log("[fetchModule]", result)
142+
// }
140143
if ('cached' in result) {
141144
const code = readFileSync(result.tmp, 'utf-8')
142145
return { code, ...result }

test/core/test/do-mock-reset-modules.test.ts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,13 +61,11 @@ test('resetModules works with doMock for direct virtual module', async () => {
6161
vi.doMock('virtual-module-direct', () => ({
6262
value: 'direct-1',
6363
}))
64-
vi.resetModules()
6564

6665
// @ts-expect-error virtual module
6766
const { value: mockedValue1 } = await import('virtual-module-direct')
6867
expect(mockedValue1).toBe('direct-1')
6968

70-
vi.resetModules()
7169
vi.doMock('virtual-module-direct', () => ({
7270
value: 'direct-2',
7371
}))

0 commit comments

Comments
 (0)