Ошибка в тесте 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");
});