Skip to content

Instantly share code, notes, and snippets.

@JamieMason
Created March 14, 2025 08:24
Show Gist options
  • Save JamieMason/35ac4f6ed4461ff5d94af7cc3e356980 to your computer and use it in GitHub Desktop.
Save JamieMason/35ac4f6ed4461ff5d94af7cc3e356980 to your computer and use it in GitHub Desktop.
mockPromise
/** Create a mock promise whose lifecycle can be controlled */
const mockPromise = (mockFn: jest.Mock) => {
let resolve: (_: unknown) => void
let reject: (_?: unknown) => void
let promise: Promise<unknown>
mockFn.mockImplementation(() => {
promise = new Promise((_resolve, _reject) => {
resolve = _resolve
reject = _reject
})
})
return {
async resolve() {
resolve(null)
await promise
},
async reject() {
reject(null)
await promise
},
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment