Ошибка в тесте Jest при использовании "testing-library"

Написал тест для компоненты React, в которой используется setTimeout, но он не работает, как я ожидал. Мок-функция consoleLog не вызывается. Где я допустил ошибку, подскажите, пожалуйста.

Код компоненты:

import React, { useEffect } from "react";

const Component = () => {
  const initialization = () => {
    setTimeout(() => {
      console.log("Test");
    }, 3000);
  };

  useEffect(() => {
    initialization();
  }, []);

  return <h1>Test</h1>;
};

export default Component;

Код теста:

import { render } from "@testing-library/react";
import Component from "./Component";

jest.useFakeTimers();

it("Correct call console.log", () => {
  const consoleLog = jest.fn();
  console.log = consoleLog;

  render(<Component />);
  jest.runAllTimers();

  expect(consoleLog).toHaveBeenCalledWith("Test");
});

Ответы (1 шт):

Автор решения: tox14

Я нашел решение проблемы. Я просто перенес строчку jest.useFakeTimers(); внутрь самого теста. Теперь тест работает корректно.

Код рабочего теста для этого компонента:

import { render } from "@testing-library/react";
import Component from "./Component";

it("Correct call console.log", () => {
  jest.useFakeTimers();
  const consoleLog = jest.fn();
  console.log = consoleLog;

  render(<Component />);
  jest.runAllTimers();

  expect(consoleLog).toHaveBeenCalledWith("Test");
});
→ Ссылка