@async-fn/jest
Version:
Additional methods to jest.fn to introduce "late resolve" of promises returned by mock functions. This allows tests that read chronologically, like a story.
31 lines (25 loc) • 948 B
TypeScript
declare module '@async-fn/jest' {
import type { PartialDeep } from 'type-fest';
type TentativeTuple<T> = T extends undefined | void ? [undefined?] : [T];
type AsyncFnMock<TToBeMocked extends (...args: any[]) => any> =
jest.MockedFunction<TToBeMocked> & {
resolve: (
...resolvedValue: TentativeTuple<
ReturnType<TToBeMocked> | Awaited<ReturnType<TToBeMocked>>
>
) => Promise<void>;
resolveSpecific: (
callFinder:
| PartialDeep<Parameters<TToBeMocked>>
| ((parameters: Parameters<TToBeMocked>) => boolean),
...resolvedValue: TentativeTuple<
ReturnType<TToBeMocked> | Awaited<ReturnType<TToBeMocked>>
>
) => Promise<void>;
reject: (rejectValue?: any) => Promise<void>;
};
export type { AsyncFnMock };
export default function asyncFn<
TToBeMocked extends (...args: any[]) => any,
>(): AsyncFnMock<TToBeMocked>;
}