File tree Expand file tree Collapse file tree 3 files changed +21
-3
lines changed
packages/vitest/src/integrations Expand file tree Collapse file tree 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
453453
454454### vi.stubEnv {#vi-stubenv}
455455
456- - ** Type:** ` (name: string , value: string) => Vitest `
456+ - ** Type:** ` <T extends string> (name: T , value: T extends "PROD" | "DEV" | "SSR" ? boolean : string | undefined ) => Vitest`
457457
458458Changes the value of environmental variable on ` process.env ` and ` import.meta.env ` . You can restore its value by calling ` vi.unstubAllEnvs ` .
459459
@@ -467,6 +467,12 @@ vi.stubEnv('NODE_ENV', 'production')
467467
468468process .env .NODE_ENV === ' production'
469469import .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+
470476// doesn't change other envs
471477import .meta .env .MODE === ' development'
472478```
Original file line number Diff line number Diff line change @@ -346,7 +346,7 @@ export interface VitestUtils {
346346 */
347347 stubEnv : < T extends string > (
348348 name : T ,
349- value : T extends 'PROD' | 'DEV' | 'SSR' ? boolean : string
349+ value : T extends 'PROD' | 'DEV' | 'SSR' ? boolean : string | undefined
350350 ) => VitestUtils
351351
352352 /**
@@ -642,13 +642,16 @@ function createVitest(): VitestUtils {
642642 return utils
643643 } ,
644644
645- stubEnv ( name : string , value : string | boolean ) {
645+ stubEnv ( name : string , value : string | boolean | undefined ) {
646646 if ( ! _stubsEnv . has ( name ) ) {
647647 _stubsEnv . set ( name , process . env [ name ] )
648648 }
649649 if ( _envBooleans . includes ( name ) ) {
650650 process . env [ name ] = value ? '1' : ''
651651 }
652+ else if ( value === undefined ) {
653+ delete process . env [ name ]
654+ }
652655 else {
653656 process . env [ name ] = String ( value )
654657 }
Original file line number Diff line number Diff line change @@ -126,4 +126,13 @@ describe('stubbing envs', () => {
126126 vi . stubEnv ( 'MY_TEST_ENV' , true )
127127 expect ( import . meta. env . MY_TEST_ENV ) . toBe ( 'true' )
128128 } )
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+ } )
129138} )
You can’t perform that action at this time.
0 commit comments