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
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);
});