From ba20c150df6cd3c3a73a0a700d000e6cd7778a19 Mon Sep 17 00:00:00 2001 From: Tom Mrazauskas Date: Tue, 8 Nov 2022 14:01:07 +0200 Subject: [PATCH] refactor(jest-mock): clean up internal typings more (#13575) --- packages/jest-mock/src/index.ts | 29 ++++++++++++++--------------- 1 file changed, 14 insertions(+), 15 deletions(-) diff --git a/packages/jest-mock/src/index.ts b/packages/jest-mock/src/index.ts index e5ee4e740c13..93c33413c3f0 100644 --- a/packages/jest-mock/src/index.ts +++ b/packages/jest-mock/src/index.ts @@ -1089,12 +1089,11 @@ export class ModuleMocker { methodKey: K, ): V extends ClassLike | FunctionLike ? Spied : never; - // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types - spyOn>( + spyOn( object: T, - methodKey: K, + methodKey: keyof T, accessType?: 'get' | 'set', - ) { + ): MockInstance { if (typeof object !== 'object' && typeof object !== 'function') { throw new Error( `Cannot spyOn on a primitive value; ${this._typeOf(object)} given`, @@ -1168,16 +1167,16 @@ export class ModuleMocker { }); } - return object[methodKey]; + return object[methodKey] as Mock; } - private _spyOnProperty>( - obj: T, - propertyKey: K, + private _spyOnProperty( + object: T, + propertyKey: keyof T, accessType: 'get' | 'set', - ): Mock<() => T> { - let descriptor = Object.getOwnPropertyDescriptor(obj, propertyKey); - let proto = Object.getPrototypeOf(obj); + ): MockInstance { + let descriptor = Object.getOwnPropertyDescriptor(object, propertyKey); + let proto = Object.getPrototypeOf(object); while (!descriptor && proto !== null) { descriptor = Object.getOwnPropertyDescriptor(proto, propertyKey); @@ -1216,10 +1215,10 @@ export class ModuleMocker { descriptor[accessType] = this._makeComponent({type: 'function'}, () => { // @ts-expect-error: mock is assignable descriptor![accessType] = original; - Object.defineProperty(obj, propertyKey, descriptor!); + Object.defineProperty(object, propertyKey, descriptor!); }); - (descriptor[accessType] as Mock<() => T>).mockImplementation(function ( + (descriptor[accessType] as Mock).mockImplementation(function ( this: unknown, ) { // @ts-expect-error - wrong context @@ -1227,8 +1226,8 @@ export class ModuleMocker { }); } - Object.defineProperty(obj, propertyKey, descriptor); - return descriptor[accessType] as Mock<() => T>; + Object.defineProperty(object, propertyKey, descriptor); + return descriptor[accessType] as Mock; } clearAllMocks(): void {