;
isMockFunction, R>(
fn: (...args: P) => R,
): fn is Mock<(...args: P) => R>;
isMockFunction(fn: unknown): fn is Mock;
fn(implementation?: T): Mock;
spyOn<
T extends object,
K extends PropertyLikeKeys,
V extends Required[K],
A extends 'get' | 'set',
>(
object: T,
methodKey: K,
accessType: A,
): A extends 'get'
? SpiedGetter
: A extends 'set'
? SpiedSetter
: never;
spyOn<
T extends object,
K extends ConstructorLikeKeys | MethodLikeKeys,
V extends Required[K],
>(
object: T,
methodKey: K,
): V extends ClassLike | FunctionLike ? Spied : never;
private _spyOnProperty;
replaceProperty(
object: T,
propertyKey: K,
value: T[K],
): Replaced;
clearAllMocks(): void;
/**
* Walks the own keys of `scope` and calls `.mockClear()` on each value that
* is a Jest mock function. Used by `resetModules` to clear mocks that user
* code installed directly on the test environment's global object (where
* the mock-fn registry doesn't see them).
*/
clearMocksOnScope(scope: object): void;
resetAllMocks(): void;
restoreAllMocks(): void;
private _typeOf;
mocked(
source: T,
options?: {
shallow: false;
},
): Mocked;
mocked(
source: T,
options: {
shallow: true;
},
): MockedShallow;
}
declare type OverloadedReturnType = T extends {
(...args: Array): infer R1;
(...args: Array): infer R2;
(...args: Array): infer R3;
(...args: Array): infer R4;
}
? R1 | R2 | R3 | R4
: T extends {
(...args: Array): infer R1;
(...args: Array): infer R2;
(...args: Array): infer R3;
}
? R1 | R2 | R3
: T extends {
(...args: Array): infer R1;
(...args: Array): infer R2;
}
? R1 | R2
: T extends (...args: Array) => infer R
? R
: never;
export declare type PropertyLikeKeys = Exclude<
keyof T,
ConstructorLikeKeys | MethodLikeKeys
>;
declare type RejectType = [
Extract, PromiseLike>,
] extends [never]
? never
: unknown;
export declare interface Replaced {
/**
* Restore property to its original value known at the time of mocking.
*/
restore(): void;
/**
* Change the value of the property.
*/
replaceValue(value: T): this;
}
export declare const replaceProperty: (
object: T,
propertyKey: K,
value: T[K],
) => Replaced;
declare type ResolveType = [
Extract, PromiseLike>,
] extends [never]
? never
: Extract, PromiseLike> extends PromiseLike<
infer U
>
? U
: never;
export declare type Spied =
T extends ClassLike
? SpiedClass
: T extends FunctionLike
? SpiedFunction
: never;
export declare type SpiedClass =
MockInstance<(...args: ConstructorParameters) => InstanceType>;
export declare type SpiedFunction =
MockInstance<(...args: Parameters) => ReturnType>;
export declare type SpiedGetter = MockInstance<() => T>;
export declare type SpiedSetter = MockInstance<(arg: T) => void>;
export declare const spyOn: {
<
T extends object,
K extends PropertyLikeKeys,
V extends Required[K],
A extends 'get' | 'set',
>(
object: T,
methodKey: K,
accessType: A,
): A extends 'get'
? SpiedGetter
: A extends 'set'
? SpiedSetter
: never;
<
T extends object,
K extends ConstructorLikeKeys | MethodLikeKeys,
V extends Required[K],
>(
object: T,
methodKey: K,
): V extends ClassLike | FunctionLike ? Spied : never;
};
export declare type UnknownClass = new (...args: Array) => unknown;
export declare type UnknownFunction = (...args: Array) => unknown;