Я заметил, что если вы запускаете какой-либо fireEvent
в тесте библиотеки реагирующего тестирования, он не очищается после теста afterEach(cleanup)
.
Например, следующий тест пройдет оба теста, , хотя они оба ожидают совершенно разных вещей, но идентичны во всех отношениях .
afterEach(cleanup);
describe("<ToggleIconButton>", () => {
// TEST 1
it("shows the <VisibileIcon> svg icon on click", () => {
const { container } = render(<ToggleIconButton />);
const button = container.querySelector("button");
fireEvent.click(button);
const svg = container.querySelector("svg");
expect(svg.getAttribute("data-testid")).toBe("visibleIcon");
});
// TEST 2
it("shows the <NotVisibleIcon> svg icon on double-click", () => {
const { container } = render(<ToggleIconButton />);
const button = container.querySelector("button");
fireEvent.click(button);
const svg = container.querySelector("svg");
expect(svg.getAttribute("data-testid")).toBe("notVisibileIcon");
});
});
Причина этого в том, что fireEvent.click(button)
в TEST 1
переносится в TEST 2
, поэтому, когда fireEvent.click(button)
вызывается в TEST 2
, он действует как двойной щелчок.
Как обеспечить очистку fireEvent после каждого теста?