(
this: ModuleMocker,
fn: T,
callback: (() => void) | (() => Promise<unknown>),
)
| 810 | callback: () => Promise<unknown>, |
| 811 | ): Promise<void>; |
| 812 | function withImplementation( |
| 813 | this: ModuleMocker, |
| 814 | fn: T, |
| 815 | callback: (() => void) | (() => Promise<unknown>), |
| 816 | ): void | Promise<void> { |
| 817 | // Remember previous mock implementation, then set new one |
| 818 | const mockConfig = this._ensureMockConfig(f); |
| 819 | const previousImplementation = mockConfig.mockImpl; |
| 820 | const previousSpecificImplementations = mockConfig.specificMockImpls; |
| 821 | mockConfig.mockImpl = fn; |
| 822 | mockConfig.specificMockImpls = []; |
| 823 | |
| 824 | const returnedValue = callback(); |
| 825 | |
| 826 | if (isPromise(returnedValue)) { |
| 827 | return returnedValue.then(() => { |
| 828 | mockConfig.mockImpl = previousImplementation; |
| 829 | mockConfig.specificMockImpls = previousSpecificImplementations; |
| 830 | }); |
| 831 | } else { |
| 832 | mockConfig.mockImpl = previousImplementation; |
| 833 | mockConfig.specificMockImpls = previousSpecificImplementations; |
| 834 | } |
| 835 | } |
| 836 | |
| 837 | f.mockImplementation = (fn: T) => { |
| 838 | // next function call will use mock implementation return value |
nothing calls this directly
no test coverage detected