From de850659a1820a021af0cbde6d35ff401754dc78 Mon Sep 17 00:00:00 2001 From: julien huang Date: Sat, 22 Jul 2023 16:33:04 +0200 Subject: [PATCH 01/10] WIP --- .../src/modules/mock.ts | 73 +++++++++++++------ playground/composables/auto-import-mock.ts | 8 ++ .../tests/nuxt/auto-import-mock.spec.ts | 6 ++ playground/tests/setup/mocks.ts | 11 +++ playground/vitest.config.ts | 6 +- 5 files changed, 80 insertions(+), 24 deletions(-) create mode 100644 playground/tests/setup/mocks.ts diff --git a/packages/vitest-environment-nuxt/src/modules/mock.ts b/packages/vitest-environment-nuxt/src/modules/mock.ts index f322dfd4..df11e1ea 100644 --- a/packages/vitest-environment-nuxt/src/modules/mock.ts +++ b/packages/vitest-environment-nuxt/src/modules/mock.ts @@ -1,16 +1,18 @@ import type { Import, Unimport } from 'unimport' import { addVitePlugin, defineNuxtModule } from '@nuxt/kit' import { walk } from 'estree-walker' -import type { CallExpression } from 'estree' +import type { CallExpression, ImportDeclaration } from 'estree' import { AcornNode } from 'rollup' import MagicString from 'magic-string' import { Component } from '@nuxt/schema' import type { Plugin } from 'vite' +import { resolve, normalize } from "path" const PLUGIN_NAME = 'nuxt:vitest:mock-transform' const HELPER_MOCK_IMPORT = 'mockNuxtImport' const HELPER_MOCK_COMPONENT = 'mockComponent' +const HELPER_MOCK_HOIST = '__NUXT_VITEST_MOCKS' const HELPERS_NAME = [HELPER_MOCK_IMPORT, HELPER_MOCK_COMPONENT] @@ -56,11 +58,19 @@ export default defineNuxtModule({ return -1 } + // path of the first vitest setup file to be ran + let resolvedFirstSetupFile: null | string = null addVitePlugin({ name: PLUGIN_NAME, enforce: 'post', // Place Vitest's mock plugin after all Nuxt plugins configResolved(config) { + const firstSetupFile = Array.isArray(config.test?.setupFiles) ? config.test!.setupFiles[0] : config.test?.setupFiles + + if (firstSetupFile) { + resolvedFirstSetupFile = normalize(resolve(firstSetupFile)) + } + const plugins = (config.plugins || []) as Plugin[] // `vite:mocks` was a typo in Vitest before v0.34.0 const mockPluginIndex = plugins.findIndex(i => i.name === 'vite:mocks' || i.name === 'vitest:mocks') @@ -74,7 +84,10 @@ export default defineNuxtModule({ }, transform: { handler(code, id) { - if (!HELPERS_NAME.some(n => code.includes(n))) return + const isFirstSetupFile = normalize(id) === resolvedFirstSetupFile + const shouldPrependMockHoist = isFirstSetupFile + + if (!HELPERS_NAME.some(n => code.includes(n)) && isFirstSetupFile) return if (id.includes('/node_modules/')) return let ast: AcornNode @@ -94,25 +107,30 @@ export default defineNuxtModule({ const s = new MagicString(code) const mocksImport: MockImportInfo[] = [] const mocksComponent: MockComponentInfo[] = [] + const importList: ImportDeclaration[] = [] walk(ast as any, { - enter: node => { + enter: (node, parent) => { // find existing vi import if ( - node.type === 'ImportDeclaration' && - node.source.value === 'vitest' && - !hasViImport + node.type === 'ImportDeclaration' ) { if ( - node.specifiers.find( - i => - i.type === 'ImportSpecifier' && i.imported.name === 'vi' - ) - ) { - insertionPoint = node.range![1] - hasViImport = true + node.source.value === 'vitest' && + !hasViImport) { + if ( + node.specifiers.find( + i => + i.type === 'ImportSpecifier' && i.imported.name === 'vi' + ) + ) { + insertionPoint = node.range![1] + hasViImport = true + } + return } - return + + importList.push(node) } if (node.type !== 'CallExpression') return @@ -145,7 +163,7 @@ export default defineNuxtModule({ return this.error(`Cannot find import "${name}" to mock`) } - s.overwrite(call.range![0], call.range![1], '') + s.overwrite(parent?.type === 'ExpressionStatement' ? parent.range![0] : call.arguments[0].range![0], parent?.type === 'ExpressionStatement' ? parent.range![1] : call.arguments[1].range![1], '') mocksImport.push({ name, import: importItem, @@ -182,7 +200,7 @@ export default defineNuxtModule({ ) const path = component?.filePath || pathOrName - s.overwrite(call.range![0], call.range![1], '') + s.overwrite(parent?.type === 'ExpressionStatement' ? parent.range![0] : call.arguments[1].range![0], parent?.type === 'ExpressionStatement' ? parent.range![1] : call.arguments[1].range![1], '') mocksComponent.push({ path: path, factory: code.slice( @@ -213,16 +231,17 @@ export default defineNuxtModule({ `vi.mock(${JSON.stringify( from )}, async (importOriginal) => {`, - ` const mod = { ...await importOriginal() }`, + `console.log(${JSON.stringify(id)}, "SETUPPPPPPPPPPPPPPP", global.${HELPER_MOCK_HOIST}) `, + ` const mocks = global.${HELPER_MOCK_HOIST} || {}`, + ` if (!mocks[${JSON.stringify(from)}]) { mocks[${JSON.stringify(from)}] = { ...await import(${JSON.stringify(from)}) } }`, ] for (const mock of mocks) { lines.push( - ` mod[${JSON.stringify(mock.name)}] = await (${ - mock.factory + ` mocks[${JSON.stringify(from)}][${JSON.stringify(mock.name)}] = await (${mock.factory })()` ) } - lines.push(` return mod`) + lines.push(` return mocks[${JSON.stringify(from)}] `) lines.push(`})`) return lines } @@ -246,9 +265,19 @@ export default defineNuxtModule({ if (!mockLines.length) return - if (!hasViImport) mockLines.unshift(`import {vi} from "vitest";`) - s.appendLeft(insertionPoint, '\n' + mockLines.join('\n') + ';\n') + if (shouldPrependMockHoist) { + s.prepend(`vi.hoisted(() => { vi.stubGlobal(${JSON.stringify(HELPER_MOCK_HOIST)}, { test:'lol' })});\n`) + } + + + if (!hasViImport) s.prepend(`import {vi} from "vitest";\n`) + + + s.appendLeft(insertionPoint, mockLines.join('\n') + '\n') + + + return { code: s.toString(), diff --git a/playground/composables/auto-import-mock.ts b/playground/composables/auto-import-mock.ts index 5c662b5e..a2e82100 100644 --- a/playground/composables/auto-import-mock.ts +++ b/playground/composables/auto-import-mock.ts @@ -5,3 +5,11 @@ export function useAutoImportedTarget() { export function useAutoImportedNonTarget() { return 'the original' } + +export function useAutoImportSetupMocked() { + return 'the original' +} + +export function useAutoImportSetupOverridenMocked() { + return 'the original' +} diff --git a/playground/tests/nuxt/auto-import-mock.spec.ts b/playground/tests/nuxt/auto-import-mock.spec.ts index 72e92643..54f32943 100644 --- a/playground/tests/nuxt/auto-import-mock.spec.ts +++ b/playground/tests/nuxt/auto-import-mock.spec.ts @@ -9,10 +9,16 @@ mockNuxtImport('useCustomModuleAutoImp return () => 'mocked!' }) +mockNuxtImport('useAutoImportSetupOverridenMocked', () => () => { + return 'mocked in test file' +}) +debugger it('should mock', () => { vi.fn() expect(useAutoImportedTarget()).toMatchInlineSnapshot('"mocked!"') expect(useAutoImportedNonTarget()).toMatchInlineSnapshot('"the original"') + expect(useAutoImportSetupOverridenMocked()).toMatchInlineSnapshot('"mocked in test file"') + expect(useAutoImportSetupMocked()).toMatchInlineSnapshot('"mocked in setup"') }) it('should mock composable from external package', () => { diff --git a/playground/tests/setup/mocks.ts b/playground/tests/setup/mocks.ts new file mode 100644 index 00000000..61806595 --- /dev/null +++ b/playground/tests/setup/mocks.ts @@ -0,0 +1,11 @@ +import { vi } from "vitest" +import { mockNuxtImport } from "vitest-environment-nuxt/utils" + +mockNuxtImport('useAutoImportSetupMocked', () => vi.fn(() => { + return 'mocked in setup' +})) + +mockNuxtImport('useAutoImportSetupOverridenMocked', () => vi.fn(() => { + return 'mocked in setup' +})) + \ No newline at end of file diff --git a/playground/vitest.config.ts b/playground/vitest.config.ts index 67f7b134..e5e7e632 100644 --- a/playground/vitest.config.ts +++ b/playground/vitest.config.ts @@ -10,8 +10,10 @@ export default defineVitestConfig({ environmentOptions: { nuxt: { rootDir: fileURLToPath(new URL('./', import.meta.url)), - domEnvironment: process.env.VITEST_DOM_ENV as 'happy-dom' | 'jsdom', + domEnvironment: process.env.VITEST_DOM_ENV as 'happy-dom' | 'jsdom' ?? 'happy-dom', }, - }, + }, + setupFiles: ['./tests/setup/mocks.ts'], + globals: true }, }) From 2b8cfb856a4f0d26d5135c4605c642578c6b5041 Mon Sep 17 00:00:00 2001 From: julien huang Date: Sat, 22 Jul 2023 20:58:30 +0200 Subject: [PATCH 02/10] feat(vitest-environnement-nuxt): allow mocking from setup files --- .../vitest-environment-nuxt/src/modules/mock.ts | 17 ++++++++++------- playground/tests/nuxt/auto-import-mock.spec.ts | 2 +- playground/tests/setup/mocks.ts | 2 +- playground/vitest.config.ts | 3 +-- 4 files changed, 13 insertions(+), 11 deletions(-) diff --git a/packages/vitest-environment-nuxt/src/modules/mock.ts b/packages/vitest-environment-nuxt/src/modules/mock.ts index df11e1ea..7ed1be39 100644 --- a/packages/vitest-environment-nuxt/src/modules/mock.ts +++ b/packages/vitest-environment-nuxt/src/modules/mock.ts @@ -108,7 +108,7 @@ export default defineNuxtModule({ const mocksImport: MockImportInfo[] = [] const mocksComponent: MockComponentInfo[] = [] const importList: ImportDeclaration[] = [] - + const importPathsList: Set = new Set() walk(ast as any, { enter: (node, parent) => { // find existing vi import @@ -227,11 +227,11 @@ export default defineNuxtModule({ mockLines.push( ...Array.from(mockImportMap.entries()).flatMap( ([from, mocks]) => { + importPathsList.add(from) const lines = [ `vi.mock(${JSON.stringify( from )}, async (importOriginal) => {`, - `console.log(${JSON.stringify(id)}, "SETUPPPPPPPPPPPPPPP", global.${HELPER_MOCK_HOIST}) `, ` const mocks = global.${HELPER_MOCK_HOIST} || {}`, ` if (!mocks[${JSON.stringify(from)}]) { mocks[${JSON.stringify(from)}] = { ...await import(${JSON.stringify(from)}) } }`, ] @@ -270,15 +270,18 @@ export default defineNuxtModule({ s.prepend(`vi.hoisted(() => { vi.stubGlobal(${JSON.stringify(HELPER_MOCK_HOIST)}, { test:'lol' })});\n`) } - if (!hasViImport) s.prepend(`import {vi} from "vitest";\n`) - s.appendLeft(insertionPoint, mockLines.join('\n') + '\n') - - - + // do an import to trick vite to keep it + // if not, the module won't be mocked + if(shouldPrependMockHoist) { + importPathsList.forEach((p) => { + s.append( `\n import ${JSON.stringify(p)};\n`) + }) + } + return { code: s.toString(), map: s.generateMap(), diff --git a/playground/tests/nuxt/auto-import-mock.spec.ts b/playground/tests/nuxt/auto-import-mock.spec.ts index 54f32943..b6630c44 100644 --- a/playground/tests/nuxt/auto-import-mock.spec.ts +++ b/playground/tests/nuxt/auto-import-mock.spec.ts @@ -12,7 +12,7 @@ mockNuxtImport('useCustomModuleAutoImp mockNuxtImport('useAutoImportSetupOverridenMocked', () => () => { return 'mocked in test file' }) -debugger + it('should mock', () => { vi.fn() expect(useAutoImportedTarget()).toMatchInlineSnapshot('"mocked!"') diff --git a/playground/tests/setup/mocks.ts b/playground/tests/setup/mocks.ts index 61806595..1101511a 100644 --- a/playground/tests/setup/mocks.ts +++ b/playground/tests/setup/mocks.ts @@ -1,6 +1,6 @@ import { vi } from "vitest" import { mockNuxtImport } from "vitest-environment-nuxt/utils" - + mockNuxtImport('useAutoImportSetupMocked', () => vi.fn(() => { return 'mocked in setup' })) diff --git a/playground/vitest.config.ts b/playground/vitest.config.ts index e5e7e632..6f641c10 100644 --- a/playground/vitest.config.ts +++ b/playground/vitest.config.ts @@ -13,7 +13,6 @@ export default defineVitestConfig({ domEnvironment: process.env.VITEST_DOM_ENV as 'happy-dom' | 'jsdom' ?? 'happy-dom', }, }, - setupFiles: ['./tests/setup/mocks.ts'], - globals: true + setupFiles: ['./tests/setup/mocks.ts'] }, }) From be737716356a081ba99d42feb1e1ae52c948d004 Mon Sep 17 00:00:00 2001 From: julien huang Date: Sun, 23 Jul 2023 00:18:15 +0200 Subject: [PATCH 03/10] fix: stubGlobal without setup file --- packages/vitest-environment-nuxt/src/modules/mock.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/vitest-environment-nuxt/src/modules/mock.ts b/packages/vitest-environment-nuxt/src/modules/mock.ts index 7ed1be39..9d628bcb 100644 --- a/packages/vitest-environment-nuxt/src/modules/mock.ts +++ b/packages/vitest-environment-nuxt/src/modules/mock.ts @@ -85,7 +85,7 @@ export default defineNuxtModule({ transform: { handler(code, id) { const isFirstSetupFile = normalize(id) === resolvedFirstSetupFile - const shouldPrependMockHoist = isFirstSetupFile + const shouldPrependMockHoist = resolvedFirstSetupFile ? isFirstSetupFile : true if (!HELPERS_NAME.some(n => code.includes(n)) && isFirstSetupFile) return if (id.includes('/node_modules/')) return @@ -232,7 +232,7 @@ export default defineNuxtModule({ `vi.mock(${JSON.stringify( from )}, async (importOriginal) => {`, - ` const mocks = global.${HELPER_MOCK_HOIST} || {}`, + ` const mocks = global.${HELPER_MOCK_HOIST}`, ` if (!mocks[${JSON.stringify(from)}]) { mocks[${JSON.stringify(from)}] = { ...await import(${JSON.stringify(from)}) } }`, ] for (const mock of mocks) { @@ -281,7 +281,7 @@ export default defineNuxtModule({ s.append( `\n import ${JSON.stringify(p)};\n`) }) } - + return { code: s.toString(), map: s.generateMap(), From 66a80ccca071276538cba76bc5be4495d9e29388 Mon Sep 17 00:00:00 2001 From: julien huang Date: Sun, 23 Jul 2023 00:22:25 +0200 Subject: [PATCH 04/10] fix: prefer importOriginal --- packages/vitest-environment-nuxt/src/modules/mock.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/vitest-environment-nuxt/src/modules/mock.ts b/packages/vitest-environment-nuxt/src/modules/mock.ts index 9d628bcb..e7043668 100644 --- a/packages/vitest-environment-nuxt/src/modules/mock.ts +++ b/packages/vitest-environment-nuxt/src/modules/mock.ts @@ -233,7 +233,7 @@ export default defineNuxtModule({ from )}, async (importOriginal) => {`, ` const mocks = global.${HELPER_MOCK_HOIST}`, - ` if (!mocks[${JSON.stringify(from)}]) { mocks[${JSON.stringify(from)}] = { ...await import(${JSON.stringify(from)}) } }`, + ` if (!mocks[${JSON.stringify(from)}]) { mocks[${JSON.stringify(from)}] = { ...await importOriginal(${JSON.stringify(from)}) } }`, ] for (const mock of mocks) { lines.push( From 17e576a834960b2b8fd4c452b6d97ad99dee4d9f Mon Sep 17 00:00:00 2001 From: julien huang Date: Sun, 23 Jul 2023 00:28:07 +0200 Subject: [PATCH 05/10] perf: remove a condition --- packages/vitest-environment-nuxt/src/modules/mock.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/vitest-environment-nuxt/src/modules/mock.ts b/packages/vitest-environment-nuxt/src/modules/mock.ts index e7043668..6b3441d7 100644 --- a/packages/vitest-environment-nuxt/src/modules/mock.ts +++ b/packages/vitest-environment-nuxt/src/modules/mock.ts @@ -87,7 +87,7 @@ export default defineNuxtModule({ const isFirstSetupFile = normalize(id) === resolvedFirstSetupFile const shouldPrependMockHoist = resolvedFirstSetupFile ? isFirstSetupFile : true - if (!HELPERS_NAME.some(n => code.includes(n)) && isFirstSetupFile) return + if (!HELPERS_NAME.some(n => code.includes(n))) return if (id.includes('/node_modules/')) return let ast: AcornNode From 6560f1b9ed89082fbb1d5d77098cbdda989cbc40 Mon Sep 17 00:00:00 2001 From: julien huang Date: Sun, 23 Jul 2023 00:28:49 +0200 Subject: [PATCH 06/10] chore: oops... --- packages/vitest-environment-nuxt/src/modules/mock.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/vitest-environment-nuxt/src/modules/mock.ts b/packages/vitest-environment-nuxt/src/modules/mock.ts index 6b3441d7..8b94ad75 100644 --- a/packages/vitest-environment-nuxt/src/modules/mock.ts +++ b/packages/vitest-environment-nuxt/src/modules/mock.ts @@ -267,7 +267,7 @@ export default defineNuxtModule({ if (shouldPrependMockHoist) { - s.prepend(`vi.hoisted(() => { vi.stubGlobal(${JSON.stringify(HELPER_MOCK_HOIST)}, { test:'lol' })});\n`) + s.prepend(`vi.hoisted(() => { vi.stubGlobal(${JSON.stringify(HELPER_MOCK_HOIST)}, {})});\n`) } if (!hasViImport) s.prepend(`import {vi} from "vitest";\n`) From 4964491cf0514688063a9a1feeaa28ea3ea59aa2 Mon Sep 17 00:00:00 2001 From: julien huang Date: Sun, 23 Jul 2023 22:32:54 +0200 Subject: [PATCH 07/10] chore: remove useless code --- packages/vitest-environment-nuxt/src/modules/mock.ts | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/packages/vitest-environment-nuxt/src/modules/mock.ts b/packages/vitest-environment-nuxt/src/modules/mock.ts index 8b94ad75..90bbd2c1 100644 --- a/packages/vitest-environment-nuxt/src/modules/mock.ts +++ b/packages/vitest-environment-nuxt/src/modules/mock.ts @@ -1,7 +1,7 @@ import type { Import, Unimport } from 'unimport' import { addVitePlugin, defineNuxtModule } from '@nuxt/kit' import { walk } from 'estree-walker' -import type { CallExpression, ImportDeclaration } from 'estree' +import type { CallExpression } from 'estree' import { AcornNode } from 'rollup' import MagicString from 'magic-string' import { Component } from '@nuxt/schema' @@ -107,8 +107,8 @@ export default defineNuxtModule({ const s = new MagicString(code) const mocksImport: MockImportInfo[] = [] const mocksComponent: MockComponentInfo[] = [] - const importList: ImportDeclaration[] = [] const importPathsList: Set = new Set() + walk(ast as any, { enter: (node, parent) => { // find existing vi import @@ -129,8 +129,6 @@ export default defineNuxtModule({ } return } - - importList.push(node) } if (node.type !== 'CallExpression') return @@ -278,7 +276,7 @@ export default defineNuxtModule({ // if not, the module won't be mocked if(shouldPrependMockHoist) { importPathsList.forEach((p) => { - s.append( `\n import ${JSON.stringify(p)};\n`) + s.append( `\n import ${JSON.stringify(p)};`) }) } From a090d18365c079102b56c440da10c050405d8926 Mon Sep 17 00:00:00 2001 From: julien huang Date: Mon, 24 Jul 2023 22:06:38 +0200 Subject: [PATCH 08/10] fix: test fixing ci --- packages/vitest-environment-nuxt/src/modules/mock.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/vitest-environment-nuxt/src/modules/mock.ts b/packages/vitest-environment-nuxt/src/modules/mock.ts index 90bbd2c1..48c65a52 100644 --- a/packages/vitest-environment-nuxt/src/modules/mock.ts +++ b/packages/vitest-environment-nuxt/src/modules/mock.ts @@ -265,7 +265,7 @@ export default defineNuxtModule({ if (shouldPrependMockHoist) { - s.prepend(`vi.hoisted(() => { vi.stubGlobal(${JSON.stringify(HELPER_MOCK_HOIST)}, {})});\n`) + s.prepend(`vi.hoisted(() => { vi.stubGlobal(${JSON.stringify(HELPER_MOCK_HOIST)}, { _nuxtVitest: true })});\n`) } if (!hasViImport) s.prepend(`import {vi} from "vitest";\n`) From 68409cc3062c71753f40e3bc098a7d7c0fb380a6 Mon Sep 17 00:00:00 2001 From: julien huang Date: Mon, 24 Jul 2023 22:52:23 +0200 Subject: [PATCH 09/10] Revert "fix: test fixing ci" This reverts commit a090d18365c079102b56c440da10c050405d8926. --- packages/vitest-environment-nuxt/src/modules/mock.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/vitest-environment-nuxt/src/modules/mock.ts b/packages/vitest-environment-nuxt/src/modules/mock.ts index 48c65a52..90bbd2c1 100644 --- a/packages/vitest-environment-nuxt/src/modules/mock.ts +++ b/packages/vitest-environment-nuxt/src/modules/mock.ts @@ -265,7 +265,7 @@ export default defineNuxtModule({ if (shouldPrependMockHoist) { - s.prepend(`vi.hoisted(() => { vi.stubGlobal(${JSON.stringify(HELPER_MOCK_HOIST)}, { _nuxtVitest: true })});\n`) + s.prepend(`vi.hoisted(() => { vi.stubGlobal(${JSON.stringify(HELPER_MOCK_HOIST)}, {})});\n`) } if (!hasViImport) s.prepend(`import {vi} from "vitest";\n`) From 6b2a4f0a21aba6e93849335974c3e8e009136013 Mon Sep 17 00:00:00 2001 From: julien huang Date: Thu, 27 Jul 2023 00:22:49 +0200 Subject: [PATCH 10/10] fix: don't stub again if already stubbed --- .../vitest-environment-nuxt/src/modules/mock.ts | 15 ++++++++------- playground/nuxt.config.ts | 3 +++ 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/packages/vitest-environment-nuxt/src/modules/mock.ts b/packages/vitest-environment-nuxt/src/modules/mock.ts index 90bbd2c1..61afaaf3 100644 --- a/packages/vitest-environment-nuxt/src/modules/mock.ts +++ b/packages/vitest-environment-nuxt/src/modules/mock.ts @@ -263,10 +263,11 @@ export default defineNuxtModule({ if (!mockLines.length) return - - if (shouldPrependMockHoist) { - s.prepend(`vi.hoisted(() => { vi.stubGlobal(${JSON.stringify(HELPER_MOCK_HOIST)}, {})});\n`) - } + s.prepend(`vi.hoisted(() => { + if(!global.${HELPER_MOCK_HOIST}){ + vi.stubGlobal(${JSON.stringify(HELPER_MOCK_HOIST)}, {}) + } + });\n`) if (!hasViImport) s.prepend(`import {vi} from "vitest";\n`) @@ -274,9 +275,9 @@ export default defineNuxtModule({ // do an import to trick vite to keep it // if not, the module won't be mocked - if(shouldPrependMockHoist) { - importPathsList.forEach((p) => { - s.append( `\n import ${JSON.stringify(p)};`) + if (shouldPrependMockHoist) { + importPathsList.forEach((p) => { + s.append(`\n import ${JSON.stringify(p)};`) }) } diff --git a/playground/nuxt.config.ts b/playground/nuxt.config.ts index 89240a06..a4407a9b 100644 --- a/playground/nuxt.config.ts +++ b/playground/nuxt.config.ts @@ -8,6 +8,9 @@ export default defineNuxtConfig({ vitest: { startOnBoot: true, logToConsole: true, + vitestConfig: { + setupFiles: ['./tests/setup/mocks'] + } }, imports: { injectAtEnd: true,