@hexancore/mocker
Version:
Simple and magical mocks for TypeScript, works with jest and vitest
36 lines (35 loc) • 1.76 kB
TypeScript
import { MockFn } from './MockFnFactory';
export declare class MethodMock<M extends (...args: any) => any> {
private readonly mock;
constructor(mock: MockFn);
andReturnWith(implementation: (...args: Parameters<M>) => ReturnType<M>): void;
andReturn(value: ReturnType<M>): void;
andReturnThis(): void;
andReturnResolved(value: ReturnType<M> extends Promise<infer U> ? U : never): void;
andReturnRejected<E extends Error>(error: ReturnType<M> extends Promise<any> ? E : never): void;
}
export type MethodMockInterface<T extends object, M extends (...args: any) => any> = ReturnType<M> extends Promise<any> ? ReturnType<M> extends T ? MethodMock<M> : Omit<MethodMock<M>, 'andReturnThis'> : Omit<MethodMock<M>, ReturnType<M> extends T ? 'andReturnResolved' | 'andReturnRejected' : 'andReturnResolved' | 'andReturnRejected' | 'andReturnThis'>;
export declare class Mocker<T extends object> {
private readonly name;
private readonly mock;
private readonly mockProxy;
private methodCallExpections;
private checkedExpections;
private notExistingDynamicSet;
static __MockFnFactory: any;
constructor(name?: string);
private createMockProxy;
static of<T extends object>(name?: string): Mocker<T>;
/**
* @return Returns mock instance
*/
get i(): T;
allowsNotExistingDynamic(names: string | string[]): Mocker<T>;
expects<K extends keyof T, M extends ((...args: any) => any) & T[K]>(name: K, ...args: Parameters<M>): MethodMockInterface<T, M>;
private createMockFn;
reset(): void;
checkExpections(reset?: boolean): void;
private checkExpection;
}
export type M<T extends object> = Mocker<T>;
export declare const mock: <T extends object>(name?: string) => Mocker<T>;