From 0cf44098e3eb12c4615cba2c513c8ee20bfa56c0 Mon Sep 17 00:00:00 2001 From: Patrick <786156072@qq.com> Date: Mon, 20 Mar 2023 18:17:41 +0800 Subject: [PATCH] fix: mocking value proxy filter Symbol static properties (#3036) --- packages/vitest/src/runtime/mocker.ts | 4 +++- test/core/test/mocked-public-key.test.ts | 15 +++++++++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) create mode 100644 test/core/test/mocked-public-key.test.ts diff --git a/packages/vitest/src/runtime/mocker.ts b/packages/vitest/src/runtime/mocker.ts index 4a770fc10bb6..049995703d53 100644 --- a/packages/vitest/src/runtime/mocker.ts +++ b/packages/vitest/src/runtime/mocker.ts @@ -8,6 +8,8 @@ import { spyOn } from '../integrations/spy' import type { MockFactory, PendingSuiteMock } from '../types/mocker' import type { VitestExecutor } from './execute' +const filterPublicKeys = ['__esModule', Symbol.asyncIterator, Symbol.hasInstance, Symbol.isConcatSpreadable, Symbol.iterator, Symbol.match, Symbol.matchAll, Symbol.replace, Symbol.search, Symbol.split, Symbol.species, Symbol.toPrimitive, Symbol.toStringTag, Symbol.unscopables] + class RefTracker { private idMap = new Map() private mockedValueMap = new Map() @@ -139,7 +141,7 @@ export class VitestMocker { return target.then.bind(target) } else if (!(prop in target)) { - if (prop === '__esModule') + if (filterPublicKeys.includes(prop)) return undefined const c = getColors() throw new Error( diff --git a/test/core/test/mocked-public-key.test.ts b/test/core/test/mocked-public-key.test.ts new file mode 100644 index 000000000000..935236701d9c --- /dev/null +++ b/test/core/test/mocked-public-key.test.ts @@ -0,0 +1,15 @@ +import { expect, test, vi } from 'vitest' +import { dynamicImport } from '../src/dynamic-import' + +vi.mock('test', () => { + return { + foo: 'foo', + } +}) + +test('testing toMatchObject for mocking module', async () => { + const result = await dynamicImport('test') + expect(result).toMatchObject({ + foo: 'foo', + }) +})