@@ -33,6 +33,39 @@ namespace JestMock {
33
33
value ?: T ;
34
34
length ?: number ;
35
35
} ;
36
+
37
+ export interface Mock < T , Y extends Array < unknown > = Array < unknown > >
38
+ extends Function ,
39
+ MockInstance < T , Y > {
40
+ new ( ...args : Y ) : T ;
41
+ ( ...args : Y ) : T ;
42
+ }
43
+
44
+ export interface SpyInstance < T , Y extends Array < unknown > >
45
+ extends MockInstance < T , Y > { }
46
+
47
+ export interface MockInstance < T , Y extends Array < unknown > > {
48
+ _isMockFunction : true ;
49
+ _protoImpl : Function ;
50
+ getMockName ( ) : string ;
51
+ getMockImplementation ( ) : Function | undefined ;
52
+ mock : MockFunctionState < T , Y > ;
53
+ mockClear ( ) : this;
54
+ mockReset ( ) : this;
55
+ mockRestore ( ) : void ;
56
+ mockImplementation ( fn : ( ...args : Y ) => T ) : this;
57
+ mockImplementation ( fn : ( ) => Promise < T > ) : this;
58
+ mockImplementationOnce ( fn : ( ...args : Y ) => T ) : this;
59
+ mockImplementationOnce ( fn : ( ) => Promise < T > ) : this;
60
+ mockName ( name : string ) : this;
61
+ mockReturnThis ( ) : this;
62
+ mockReturnValue ( value : T ) : this;
63
+ mockReturnValueOnce ( value : T ) : this;
64
+ mockResolvedValue ( value : T ) : this;
65
+ mockResolvedValueOnce ( value : T ) : this;
66
+ mockRejectedValue ( value : T ) : this;
67
+ mockRejectedValueOnce ( value : T ) : this;
68
+ }
36
69
}
37
70
38
71
/**
@@ -87,38 +120,6 @@ type FunctionPropertyNames<T> = {
87
120
} [ keyof T ] &
88
121
string ;
89
122
90
- interface Mock < T , Y extends Array < unknown > = Array < unknown > >
91
- extends Function ,
92
- MockInstance < T , Y > {
93
- new ( ...args : Y ) : T ;
94
- ( ...args : Y ) : T ;
95
- }
96
-
97
- interface SpyInstance < T , Y extends Array < unknown > > extends MockInstance < T , Y > { }
98
-
99
- interface MockInstance < T , Y extends Array < unknown > > {
100
- _isMockFunction : true ;
101
- _protoImpl : Function ;
102
- getMockName ( ) : string ;
103
- getMockImplementation ( ) : Function | undefined ;
104
- mock : MockFunctionState < T , Y > ;
105
- mockClear ( ) : this;
106
- mockReset ( ) : this;
107
- mockRestore ( ) : void ;
108
- mockImplementation ( fn : ( ...args : Y ) => T ) : this;
109
- mockImplementation ( fn : ( ) => Promise < T > ) : this;
110
- mockImplementationOnce ( fn : ( ...args : Y ) => T ) : this;
111
- mockImplementationOnce ( fn : ( ) => Promise < T > ) : this;
112
- mockName ( name : string ) : this;
113
- mockReturnThis ( ) : this;
114
- mockReturnValue ( value : T ) : this;
115
- mockReturnValueOnce ( value : T ) : this;
116
- mockResolvedValue ( value : T ) : this;
117
- mockResolvedValueOnce ( value : T ) : this;
118
- mockRejectedValue ( value : T ) : this;
119
- mockRejectedValueOnce ( value : T ) : this;
120
- }
121
-
122
123
const MOCK_CONSTRUCTOR_NAME = 'mockConstructor' ;
123
124
124
125
const FUNCTION_NAME_RESERVED_PATTERN = / [ \s ! -\/ : - @ \[ - ` { -~ ] / ;
@@ -363,7 +364,10 @@ function isReadonlyProp(object: any, prop: string): boolean {
363
364
364
365
class ModuleMockerClass {
365
366
private _environmentGlobal : Global ;
366
- private _mockState : WeakMap < Mock < any , any > , MockFunctionState < any , any > > ;
367
+ private _mockState : WeakMap <
368
+ JestMock . Mock < any , any > ,
369
+ MockFunctionState < any , any >
370
+ > ;
367
371
private _mockConfigRegistry : WeakMap < Function , MockFunctionConfig > ;
368
372
private _spyState : Set < ( ) => void > ;
369
373
private _invocationCallCounter : number ;
@@ -430,7 +434,7 @@ class ModuleMockerClass {
430
434
}
431
435
432
436
private _ensureMockConfig < T , Y extends Array < unknown > > (
433
- f : Mock < T , Y > ,
437
+ f : JestMock . Mock < T , Y > ,
434
438
) : MockFunctionConfig {
435
439
let config = this . _mockConfigRegistry . get ( f ) ;
436
440
if ( ! config ) {
@@ -441,7 +445,7 @@ class ModuleMockerClass {
441
445
}
442
446
443
447
private _ensureMockState < T , Y extends Array < unknown > > (
444
- f : Mock < T , Y > ,
448
+ f : JestMock . Mock < T , Y > ,
445
449
) : MockFunctionState < T , Y > {
446
450
let state = this . _mockState . get ( f ) ;
447
451
if ( ! state ) {
@@ -495,7 +499,7 @@ class ModuleMockerClass {
495
499
private _makeComponent < T , Y extends Array < unknown > > (
496
500
metadata : JestMock . MockFunctionMetadata < T , Y , 'function' > ,
497
501
restore ?: ( ) => void ,
498
- ) : Mock < T , Y > ;
502
+ ) : JestMock . Mock < T , Y > ;
499
503
private _makeComponent < T , Y extends Array < unknown > > (
500
504
metadata : JestMock . MockFunctionMetadata < T , Y > ,
501
505
restore ?: ( ) => void ,
@@ -505,7 +509,7 @@ class ModuleMockerClass {
505
509
| RegExp
506
510
| T
507
511
| undefined
508
- | Mock < T , Y > {
512
+ | JestMock . Mock < T , Y > {
509
513
if ( metadata . type === 'object' ) {
510
514
return new this . _environmentGlobal . Object ( ) ;
511
515
} else if ( metadata . type === 'array' ) {
@@ -617,7 +621,7 @@ class ModuleMockerClass {
617
621
const f = ( this . _createMockFunction (
618
622
metadata ,
619
623
mockConstructor ,
620
- ) as unknown ) as Mock < T , Y > ;
624
+ ) as unknown ) as JestMock . Mock < T , Y > ;
621
625
f . _isMockFunction = true ;
622
626
f . getMockImplementation = ( ) => this . _ensureMockConfig ( f ) . mockImpl ;
623
627
@@ -673,7 +677,7 @@ class ModuleMockerClass {
673
677
674
678
f . mockImplementationOnce = (
675
679
fn : ( ( ...args : Y ) => T ) | ( ( ) => Promise < T > ) ,
676
- ) : Mock < T , Y > => {
680
+ ) : JestMock . Mock < T , Y > => {
677
681
// next function call will use this mock implementation return value
678
682
// or default mock implementation return value
679
683
const mockConfig = this . _ensureMockConfig ( f ) ;
@@ -683,7 +687,7 @@ class ModuleMockerClass {
683
687
684
688
f . mockImplementation = (
685
689
fn : ( ( ...args : Y ) => T ) | ( ( ) => Promise < T > ) ,
686
- ) : Mock < T , Y > => {
690
+ ) : JestMock . Mock < T , Y > => {
687
691
// next function call will use mock implementation return value
688
692
const mockConfig = this . _ensureMockConfig ( f ) ;
689
693
mockConfig . mockImpl = fn ;
@@ -789,9 +793,9 @@ class ModuleMockerClass {
789
793
| RegExp
790
794
| T
791
795
| undefined
792
- | Mock < T , Y > ;
796
+ | JestMock . Mock < T , Y > ;
793
797
} ,
794
- ) : Mock < T , Y > {
798
+ ) : JestMock . Mock < T , Y > {
795
799
// metadata not compatible but it's the same type, maybe problem with
796
800
// overloading of _makeComponent and not _generateMock?
797
801
// @ts -expect-error
@@ -822,7 +826,7 @@ class ModuleMockerClass {
822
826
mock . prototype . constructor = mock ;
823
827
}
824
828
825
- return mock as Mock < T , Y > ;
829
+ return mock as JestMock . Mock < T , Y > ;
826
830
}
827
831
828
832
/**
@@ -832,7 +836,7 @@ class ModuleMockerClass {
832
836
*/
833
837
generateFromMetadata < T , Y extends Array < unknown > > (
834
838
_metadata : JestMock . MockFunctionMetadata < T , Y > ,
835
- ) : Mock < T , Y > {
839
+ ) : JestMock . Mock < T , Y > {
836
840
const callbacks : Array < Function > = [ ] ;
837
841
const refs = { } ;
838
842
const mock = this . _generateMock ( _metadata , callbacks , refs ) ;
@@ -913,13 +917,13 @@ class ModuleMockerClass {
913
917
return metadata ;
914
918
}
915
919
916
- isMockFunction < T > ( fn : any ) : fn is Mock < T > {
920
+ isMockFunction < T > ( fn : any ) : fn is JestMock . Mock < T > {
917
921
return ! ! fn && fn . _isMockFunction === true ;
918
922
}
919
923
920
924
fn < T , Y extends Array < unknown > > (
921
925
implementation ?: ( ...args : Y ) => T ,
922
- ) : Mock < T , Y > {
926
+ ) : JestMock . Mock < T , Y > {
923
927
const length = implementation ? implementation . length : 0 ;
924
928
const fn = this . _makeComponent < T , Y > ( { length, type : 'function' } ) ;
925
929
if ( implementation ) {
@@ -932,19 +936,19 @@ class ModuleMockerClass {
932
936
object : T ,
933
937
methodName : M ,
934
938
accessType : 'get' ,
935
- ) : SpyInstance < T [ M ] , [ ] > ;
939
+ ) : JestMock . SpyInstance < T [ M ] , [ ] > ;
936
940
937
941
spyOn < T extends { } , M extends NonFunctionPropertyNames < T > > (
938
942
object : T ,
939
943
methodName : M ,
940
944
accessType : 'set' ,
941
- ) : SpyInstance < void , [ T [ M ] ] > ;
945
+ ) : JestMock . SpyInstance < void , [ T [ M ] ] > ;
942
946
943
947
spyOn < T extends { } , M extends FunctionPropertyNames < T > > (
944
948
object : T ,
945
949
methodName : M ,
946
950
) : T [ M ] extends ( ...args : Array < any > ) => any
947
- ? SpyInstance < ReturnType < T [ M ] > , Parameters < T [ M ] > >
951
+ ? JestMock . SpyInstance < ReturnType < T [ M ] > , Parameters < T [ M ] > >
948
952
: never ;
949
953
950
954
spyOn < T extends { } , M extends NonFunctionPropertyNames < T > > (
@@ -999,7 +1003,7 @@ class ModuleMockerClass {
999
1003
obj : T ,
1000
1004
propertyName : M ,
1001
1005
accessType : 'get' | 'set' = 'get' ,
1002
- ) : Mock < T > {
1006
+ ) : JestMock . Mock < T > {
1003
1007
if ( typeof obj !== 'object' && typeof obj !== 'function' ) {
1004
1008
throw new Error (
1005
1009
'Cannot spyOn on a primitive value; ' + this . _typeOf ( obj ) + ' given' ,
@@ -1058,7 +1062,7 @@ class ModuleMockerClass {
1058
1062
Object . defineProperty ( obj , propertyName , descriptor ! ) ;
1059
1063
} ) ;
1060
1064
1061
- ( descriptor [ accessType ] as Mock < T > ) . mockImplementation ( function (
1065
+ ( descriptor [ accessType ] as JestMock . Mock < T > ) . mockImplementation ( function (
1062
1066
this : unknown ,
1063
1067
) {
1064
1068
// @ts -expect-error
@@ -1067,7 +1071,7 @@ class ModuleMockerClass {
1067
1071
}
1068
1072
1069
1073
Object . defineProperty ( obj , propertyName , descriptor ) ;
1070
- return descriptor [ accessType ] as Mock < T > ;
1074
+ return descriptor [ accessType ] as JestMock . Mock < T > ;
1071
1075
}
1072
1076
1073
1077
clearAllMocks ( ) {
0 commit comments