Mocking console.log with jest

describe("outer", () => {
  describe("inner", () => {
    let spy: jest.SpyInstance;

    beforeAll(() => {
      spy = jest.spyOn(global.console, "log").mockImplementation();
    });

    afterAll(() => {
      spy.mockRestore();
    });

    it("does not call actual console.log", () => {
      console.log("inner");
    });
  });

  it("does call actual console.log", () => {
    console.log("outer");
  });
});

// $ jest console.test.ts
//   console.log
//     outer
//       at Object.<anonymous> (console.test.ts:19:13)
//
//  PASS  console.test.ts (7.29 s)
//   outer
//     ✓ does call actual console.log (73 ms)
//     inner
//       ✓ does not call actual console.log (61 ms)