DeepMocked
type alias in meocord/testing Since 4.0.0
type DeepMocked<T, Depth extends number[] = []> = Depth['length'] extends 5
? T
: {
-readonly [K in keyof T]: T[K] extends (...args: any[]) => any
? MockedFunction<T[K]>
: T[K] extends object
? DeepMocked<T[K], [...Depth, 0]>
: Depth extends []
? NonNullable<T[K]> extends Base
? | DeepMocked<NonNullable<T[K]>, [...Depth, 0]>
| Extract<T[K], null | undefined>
: T[K]
: T[K]
} & TA mock of T: every method a mock function, and every nested object mocked in turn, five levels deep, including a
discord.js structure that may be absent, such as a message's member, when it is present.
It is what the mock factories return. It is assignable wherever T is expected, and each method takes
mockResolvedValue and the rest of MockInstance.