jest reset mock code example

Example 1: jest mock reset

test("mockFn.mockReset", () => {
  const mockFn = jest.fn().mockImplementation(() => 43);
  const MockClass = jest.fn();

  new MockClass();
  expect(mockFn()).toBe(43);

  expect(mockFn.mock.calls).toHaveLength(1);
  expect(MockClass.mock.instances).toHaveLength(1);

  mockFn.mockReset();
  MockClass.mockReset();

  new MockClass();
  expect(mockFn()).toBeUndefined();

  expect(mockFn.mock.calls).toHaveLength(1);
  expect(MockClass.mock.instances).toHaveLength(1);
});

Example 2: jest mock restore

// equvalent to mockReset

test("mockFn.mockRestore", () => {
  const StringUtils = {
    toUpperCase(arg) {
      return arg && arg.toUpperCase();
    }
  };

  const spy = jest.spyOn(StringUtils, "toUpperCase").mockImplementation(() => "MOCK");

  expect(StringUtils.toUpperCase("arg")).toBe("MOCK");
  expect(spy).toHaveBeenCalledTimes(1);
  expect(jest.isMockFunction(StringUtils.toUpperCase)).toBeTruthy();

  spy.mockRestore();

  expect(spy("arg")).toBeUndefined();
  expect(jest.isMockFunction(StringUtils.toUpperCase)).not.toBeTruthy();
  expect(StringUtils.toUpperCase("arg")).toBe("ARG");
  expect(spy).toHaveBeenCalledTimes(1);
 
});

Example 3: jest mockclear

test("mockFn.mockClear", () => {
  const mockFn = jest.fn().mockImplementation(() => 42);
  const MockClass = jest.fn();

  new MockClass();
  expect(mockFn()).toBe(42);

  expect(mockFn.mock.calls).toHaveLength(1);
  expect(MockClass.mock.instances).toHaveLength(1);

  new MockClass();
  expect(mockFn()).toBe(42);

  expect(mockFn.mock.calls).toHaveLength(2);
  expect(MockClass.mock.instances).toHaveLength(2);

  mockFn.mockClear();
  MockClass.mockClear();

   new MockClass();
  expect(mockFn()).toBe(42);

  expect(mockFn.mock.calls).toHaveLength(1);
  expect(MockClass.mock.instances).toHaveLength(1);
  
});