@@ -58,10 +58,10 @@ export function internalSpyOn<T, K extends string & keyof T>(
58
58
let objDescriptor = getDescriptor ( obj , accessName )
59
59
let proto = Object . getPrototypeOf ( obj )
60
60
let protoDescriptor = proto && getDescriptor ( proto , accessName )
61
- let descriptor = objDescriptor || protoDescriptor
61
+ let originalDescriptor = objDescriptor || protoDescriptor
62
62
63
63
assert (
64
- descriptor || accessName in obj ,
64
+ originalDescriptor || accessName in obj ,
65
65
`${ String ( accessName ) } does not exist`
66
66
)
67
67
@@ -70,19 +70,19 @@ export function internalSpyOn<T, K extends string & keyof T>(
70
70
// vite ssr support - actual function is stored inside a getter
71
71
if (
72
72
accessType === 'value' &&
73
- descriptor &&
74
- ! descriptor . value &&
75
- descriptor . get
73
+ originalDescriptor &&
74
+ ! originalDescriptor . value &&
75
+ originalDescriptor . get
76
76
) {
77
77
accessType = 'get'
78
78
ssr = true
79
- mock = descriptor . get ! ( )
79
+ mock = originalDescriptor . get ! ( )
80
80
}
81
81
82
82
let origin : Procedure
83
83
84
- if ( descriptor ) {
85
- origin = descriptor [ accessType ]
84
+ if ( originalDescriptor ) {
85
+ origin = originalDescriptor [ accessType ]
86
86
} else if ( accessType !== 'value' ) {
87
87
origin = ( ) => obj [ accessName as keyof T ]
88
88
} else {
@@ -93,7 +93,7 @@ export function internalSpyOn<T, K extends string & keyof T>(
93
93
94
94
let fn = createInternalSpy ( mock )
95
95
let reassign = ( cb : any ) => {
96
- let { value, ...desc } = descriptor || {
96
+ let { value, ...desc } = originalDescriptor || {
97
97
configurable : true ,
98
98
writable : true ,
99
99
}
@@ -103,7 +103,9 @@ export function internalSpyOn<T, K extends string & keyof T>(
103
103
; ( desc as PropertyDescriptor ) [ accessType ] = cb
104
104
define ( obj , accessName , desc )
105
105
}
106
- let restore = ( ) => reassign ( origin )
106
+ let restore = ( ) => originalDescriptor
107
+ ? define ( obj , accessName , originalDescriptor )
108
+ : reassign ( origin )
107
109
const state = fn [ S ]
108
110
defineValue ( state , 'restore' , restore )
109
111
defineValue ( state , 'getOriginal' , ( ) => ( ssr ? origin ( ) : origin ) )
0 commit comments