@@ -3,7 +3,7 @@ import path from 'node:path'
33import { playwright } from '@vitest/browser-playwright'
44import { expect , test } from 'vitest'
55import { rolldownVersion } from 'vitest/node'
6- import { runInlineTests , runVitest } from '../../test-utils'
6+ import { runInlineTests , runVitest , StableTestFileOrderSorter } from '../../test-utils'
77
88test ( 'setting resetMocks works if restoreMocks is also set' , async ( ) => {
99 const { stderr, testTree } = await runInlineTests ( {
@@ -510,3 +510,65 @@ test("local", async () => {
510510 }
511511 ` )
512512} )
513+
514+ test ( 'automocking works with isolate:false when factory mock runs first (resolve alias)' , async ( ) => {
515+ const { stderr, testTree } = await runInlineTests ( {
516+ 'vitest.config.js' : `
517+ import path from 'node:path'
518+ import { defineConfig } from 'vitest/config'
519+
520+ export default defineConfig({
521+ resolve: {
522+ alias: {
523+ '~': path.resolve(import.meta.dirname, 'src'),
524+ },
525+ },
526+ test: {
527+ isolate: false,
528+ },
529+ })
530+ ` ,
531+ './src/dep.ts' : `
532+ export function useDep(): string { return 'real' }
533+ export function helperDep(): number { return 42 }
534+ ` ,
535+ './a-factory.test.ts' : `
536+ import { vi, test, expect } from 'vitest'
537+ import { useDep } from '~/dep'
538+ vi.mock(import('~/dep'), () => ({
539+ useDep: () => 'factory',
540+ helperDep: () => 0,
541+ }))
542+ test('factory mock', () => {
543+ expect(useDep()).toBe('factory')
544+ })
545+ ` ,
546+ './b-automock.test.ts' : `
547+ import { vi, test, expect } from 'vitest'
548+ import { useDep } from '~/dep'
549+ vi.mock(import('~/dep'))
550+ test('automock exports are mock functions', () => {
551+ expect(vi.isMockFunction(useDep)).toBe(true)
552+ })
553+ test('automock mockReturnValue works', () => {
554+ vi.mocked(useDep).mockReturnValue('mocked')
555+ expect(useDep()).toBe('mocked')
556+ })
557+ ` ,
558+ } , {
559+ sequence : { sequencer : StableTestFileOrderSorter } ,
560+ } )
561+
562+ expect ( stderr ) . toBe ( '' )
563+ expect ( testTree ( ) ) . toMatchInlineSnapshot ( `
564+ {
565+ "a-factory.test.ts": {
566+ "factory mock": "passed",
567+ },
568+ "b-automock.test.ts": {
569+ "automock exports are mock functions": "passed",
570+ "automock mockReturnValue works": "passed",
571+ },
572+ }
573+ ` )
574+ } )
0 commit comments