1describe("mockImplementation", () => {
2  test("function", () => {
3    const mockFn1 = jest.fn().mockImplementation(() => 42);
4    const mockFn2 = jest.fn(() => 42);
5
6    expect(mockFn1()).toBe(42);
7    expect(mockFn2()).toBe(42);
8  });1//class.js
2class MyClass {
3  methodOne() {
4    return 1;
5  }
6  methodTwo() {
7    return 2;
8  }
9}
10module.exports = MyClass;
11
12// class.test.js
13test('spy using class method', () => {
14  const result = new MyClass()
15  const spy = jest.spyOn(result, 'methodOne')
16  result.methodOne()
17
18  // check class method is call or not
19  expect(spy).toHaveBeenCalled()
20
21  // expect old value
22  expect(result.methodOne()).toBe(1)
23
24  // expect new value
25  spy.mockReturnValueOnce(12)
26  expect(result.methodOne()).toBe(12)
27})