diff --git a/packages/jest-mock/src/__tests__/jest_mock.test.js b/packages/jest-mock/src/__tests__/jest_mock.test.js index 5b07888980ca..4aa0645df5cd 100644 --- a/packages/jest-mock/src/__tests__/jest_mock.test.js +++ b/packages/jest-mock/src/__tests__/jest_mock.test.js @@ -422,6 +422,14 @@ describe('moduleMocker', () => { }); }); + test('mockImplementation resets the mock', () => { + const fn = jest.fn(); + expect(fn()).toBeUndefined(); + fn.mockReturnValue('returnValue'); + fn.mockImplementation(() => 'foo'); + expect(fn()).toBe('foo'); + }); + it('should recognize a mocked function', () => { const mockFn = moduleMocker.fn(); diff --git a/packages/jest-mock/src/index.js b/packages/jest-mock/src/index.js index e41b5c221ff5..ea49d9452fff 100644 --- a/packages/jest-mock/src/index.js +++ b/packages/jest-mock/src/index.js @@ -348,6 +348,7 @@ class ModuleMockerClass { // next function call will use mock implementation return value const mockConfig = this._ensureMockConfig(f); mockConfig.isReturnValueLastSet = false; + mockConfig.defaultReturnValue = undefined; mockConfig.mockImpl = fn; return f; };