jest mocks code example

Example 1: jest manual mock node module

// lodash.js
const _ = require('lodash')
module.exports = () => _.repeat('abc', 3)

// lodash.test.js
jest.mock('lodash')
const lodashMock = require('lodash')
const { repeat } = jest.requireActual('lodash')
const lodashRepeat = require('../lodash')

describe('manual mock module', () => {

  beforeEach(() => {
    // setup mock
    lodashMock.repeat.mockReturnValue(repeat('xxx', 3))
  })

  it('lodash repeat value', () => {

    // expect lodashMock
    expect(jest.isMockFunction(lodashMock)).toBeTruthy()

    // expect lodash.js
    expect(lodashRepeat()).toBeDefined()
    expect(lodashRepeat()).toBe("xxxxxxxxx")
    expect(lodashRepeat().length).toBe(9)
  })
})

Example 2: how to mock a library in jest

import randomColor from "randomcolor";


jest.mock("randomColor", () => {
  return {
    randomColor: () => {
      return mockColor('#123456');
    }
  }
});
let mockColor = jest.fn();

Example 3: jest mock class

test("es6 class", () => {
    const SomeClass = jest.fn();
    const mMock = jest.fn();

    SomeClass.mockImplementation(() => {
      return {
        m: mMock
      };
    });

    const some = new SomeClass();
    some.m("a", "b");
    expect(mMock.mock.calls).toEqual([["a", "b"]]);
  });

Example 4: jest mock implementation

describe("mockImplementation", () => {
  test("function", () => {
    const mockFn1 = jest.fn().mockImplementation(() => 42);
    const mockFn2 = jest.fn(() => 42);

    expect(mockFn1()).toBe(42);
    expect(mockFn2()).toBe(42);
  });

Example 5: jest mock call

test("mock.calls", () => {
  const mockFn = jest.fn();
  mockFn(1, 2);

  expect(mockFn.mock.calls).toEqual([[1, 2]]);
});