jestjs - react-testing-library中的每次测试后如何清理fireEvents?
问题描述
我注意到,如果您fireEvent
在 react-testing-library 测试中运行任何类型的测试,它在测试后不会被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)
inTEST 1
继承了 into TEST 2
,所以当fireEvent.click(button)
调用 in 时TEST 2
,它的行为就像是双击一样。
如何确保在每次测试后清理 fireEvent?