diff --git a/examples/mocks/__mocks__/extension.js.ts b/examples/mocks/__mocks__/extension.js.ts new file mode 100644 index 000000000..879c9bbb6 --- /dev/null +++ b/examples/mocks/__mocks__/extension.js.ts @@ -0,0 +1 @@ +export const mocked = true diff --git a/examples/mocks/test/has-extension.spec.ts b/examples/mocks/test/has-extension.spec.ts new file mode 100644 index 000000000..3b26b04a1 --- /dev/null +++ b/examples/mocks/test/has-extension.spec.ts @@ -0,0 +1,8 @@ +// @ts-expect-error mocked module +import { mocked } from 'extension.js' + +vi.mock('extension.js') + +test('module with extension is mocked', () => { + expect(mocked).toBe(true) +}) diff --git a/packages/vitest/src/runtime/mocker.ts b/packages/vitest/src/runtime/mocker.ts index 039811775..33c5c8355 100644 --- a/packages/vitest/src/runtime/mocker.ts +++ b/packages/vitest/src/runtime/mocker.ts @@ -1,6 +1,6 @@ import { existsSync, readdirSync } from 'fs' import { isNodeBuiltin } from 'mlly' -import { basename, dirname, join, resolve } from 'pathe' +import { basename, dirname, extname, join, resolve } from 'pathe' import { normalizeRequestId, pathFromRoot, toFilePath } from 'vite-node/utils' import type { ModuleCacheMap } from 'vite-node/client' import { getAllMockableProperties, getType, getWorkerState, mergeSlashes, slash } from '../utils' @@ -165,11 +165,11 @@ export class VitestMocker { return null const files = readdirSync(mockFolder) - const baseFilename = basename(path) + const baseOriginal = basename(path) for (const file of files) { - const [basename] = file.split('.') - if (basename === baseFilename) + const baseFile = basename(file, extname(file)) + if (baseFile === baseOriginal) return resolve(mockFolder, file) }