File tree 3 files changed +21
-3
lines changed
packages/vitest/src/integrations
3 files changed +21
-3
lines changed Original file line number Diff line number Diff line change @@ -453,7 +453,7 @@ And while it is possible to spy on exports in `jsdom` or other Node.js environme
453
453
454
454
### vi.stubEnv {#vi-stubenv}
455
455
456
- - ** Type:** ` (name: string , value: string) => Vitest `
456
+ - ** Type:** ` <T extends string> (name: T , value: T extends "PROD" | "DEV" | "SSR" ? boolean : string | undefined ) => Vitest`
457
457
458
458
Changes the value of environmental variable on ` process.env ` and ` import.meta.env ` . You can restore its value by calling ` vi.unstubAllEnvs ` .
459
459
@@ -467,6 +467,12 @@ vi.stubEnv('NODE_ENV', 'production')
467
467
468
468
process .env .NODE_ENV === ' production'
469
469
import .meta .env .NODE_ENV === ' production'
470
+
471
+ vi .stubEnv (' NODE_ENV' , undefined )
472
+
473
+ process .env .NODE_ENV === undefined
474
+ import .meta .env .NODE_ENV === undefined
475
+
470
476
// doesn't change other envs
471
477
import .meta .env .MODE === ' development'
472
478
```
Original file line number Diff line number Diff line change @@ -346,7 +346,7 @@ export interface VitestUtils {
346
346
*/
347
347
stubEnv : < T extends string > (
348
348
name : T ,
349
- value : T extends 'PROD' | 'DEV' | 'SSR' ? boolean : string
349
+ value : T extends 'PROD' | 'DEV' | 'SSR' ? boolean : string | undefined
350
350
) => VitestUtils
351
351
352
352
/**
@@ -642,13 +642,16 @@ function createVitest(): VitestUtils {
642
642
return utils
643
643
} ,
644
644
645
- stubEnv ( name : string , value : string | boolean ) {
645
+ stubEnv ( name : string , value : string | boolean | undefined ) {
646
646
if ( ! _stubsEnv . has ( name ) ) {
647
647
_stubsEnv . set ( name , process . env [ name ] )
648
648
}
649
649
if ( _envBooleans . includes ( name ) ) {
650
650
process . env [ name ] = value ? '1' : ''
651
651
}
652
+ else if ( value === undefined ) {
653
+ delete process . env [ name ]
654
+ }
652
655
else {
653
656
process . env [ name ] = String ( value )
654
657
}
Original file line number Diff line number Diff line change @@ -126,4 +126,13 @@ describe('stubbing envs', () => {
126
126
vi . stubEnv ( 'MY_TEST_ENV' , true )
127
127
expect ( import . meta. env . MY_TEST_ENV ) . toBe ( 'true' )
128
128
} )
129
+
130
+ it ( 'stubs to undefined and restores env' , ( ) => {
131
+ vi . stubEnv ( 'VITE_TEST_UPDATE_ENV' , undefined )
132
+ expect ( import . meta. env . VITE_TEST_UPDATE_ENV ) . toBeUndefined ( )
133
+ expect ( process . env . VITE_TEST_UPDATE_ENV ) . toBeUndefined ( )
134
+ vi . unstubAllEnvs ( )
135
+ expect ( import . meta. env . VITE_TEST_UPDATE_ENV ) . toBe ( 'development' )
136
+ expect ( process . env . VITE_TEST_UPDATE_ENV ) . toBe ( 'development' )
137
+ } )
129
138
} )
You can’t perform that action at this time.
0 commit comments