首页 > 解决方案 > 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?

标签: jestjsreact-testing-library

解决方案


推荐阅读