View Code? Open in Web Editor
NEW
Additional methods for different mocking libraries to introduce "late resolve" of promises returned by the mock functions. This allows tests that read chronologically, like a story.
Home Page: https://medium.com/houston-io/how-to-unit-test-asynchronous-code-for-javascript-in-2020-41c124be2552
JavaScript 99.35%
Shell 0.65%
async-fn's Issues
Currently, there are no TypeScript definition files in the package. Is possible to export them?
My global definition for the '@async-fn/jest' package is below:
/// <reference types="jest" />
type AsyncFunction = ( ...args : any [ ] ) => Promise < unknown > ;
type PromiseValue < PromiseType , Otherwise = PromiseType > = PromiseType extends Promise < infer Value >
? { 0 : PromiseValue < Value > ; 1 : Value } [ PromiseType extends Promise < unknown > ? 0 : 1 ]
: Otherwise ;
type AsyncReturnType < Target extends AsyncFunction > = PromiseValue < ReturnType < Target > > ;
declare module '@async-fn/jest' {
type MockedAsyncFn < T extends ( ...args : any [ ] ) => any > =
& Omit <
jest . MockInstance < ReturnType < T > , Parameters < T > > ,
| 'mockImplementation'
| 'mockImplementationOnce'
| 'mockReturnValue'
| 'mockReturnValueOnce'
>
& T & {
resolve : ( resolvedValue : AsyncReturnType < T > ) => Promise < void > ,
reject : ( rejectValue : any ) => Promise < void >
} ;
export type { MockedAsyncFn } ;
export default function asyncFn < T , Y extends any [ ] > ( implementation ?: ( ...args : Y ) => T ) : jest . Mock < T , Y > ;
export default function asyncFn ( ) : jest . Mock ;
}