MCPcopy
hub / github.com/jestjs/jest / withImplementation

Method withImplementation

packages/jest-mock/src/index.ts:812–835  ·  view source on GitHub ↗
(
        this: ModuleMocker,
        fn: T,
        callback: (() => void) | (() => Promise<unknown>),
      )

Source from the content-addressed store, hash-verified

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

Callers

nothing calls this directly

Calls 4

_ensureMockConfigMethod · 0.95
isPromiseFunction · 0.90
thenMethod · 0.80
callbackFunction · 0.50

Tested by

no test coverage detected