reactjs - 如何使用 Jest 和 Enzyme 对 useEffect cleanUp 返回函数进行单元测试

标签 reactjs jestjs enzyme

我尝试了很多方案,但没有一个有效,我面临 useEffect Cleanup 返回方法的问题。寻找一些解决方案来覆盖用例。由于声誉较低,无法附加屏幕截图。

我做了一些研究并遵循了提供的解决方案,例如创建 spy 、安装、卸载场景。但没有一个奏效。

useEffect(() => {
    window.addEventListener('scroll', handleScroll);
    window.addEventListener('resize', handleResize);
    return () => {
       window.removeEventListener('scroll', handleScroll);
       window.removeEventListener('resize', handleResize);
    };
}, []);

预期 useEffect 函数内 return 语句的测试覆盖率。

请原谅拼写错误 - 从手机发布。

最佳答案

我建议您结帐react-testing-library 。该库提供了一个 unmount 方法,该方法从其 render 方法返回。调用unmount()后,您可以检查监听器是否已被删除。总的来说,我非常推荐react-testing-library。我们将它与 jest 结合用于所有前端测试,它的作用就像一个魅力。

unmount 方法的示例用法:

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

it("Should do what I want", () => {
  const { unmount } = render(
    <MyComponent value="test" } />
  );

  unmount();

  // ... expects
});

关于reactjs - 如何使用 Jest 和 Enzyme 对 useEffect cleanUp 返回函数进行单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58194024/

相关文章:

reactjs - 使用 Jest 和 Enzyme 测试 React 组件 : where to test whether component props were given

javascript - JS 单元测试使用不同参数运行多次

reactjs - 如何在 Jest 中为函数编写测试用例?

jestjs - 使用 jest "watch mode"和 nx 测试(nx CLI)

javascript - react 测试 Hook 状态是否被子组件更新

javascript - express res.download()

javascript - React Router 没有 Router 属性

javascript - 在 React 中使用 for 循环对象时出现连线错误

javascript - 提交使用 React 组件制作的登录表单

javascript - 如何克服 jest "Cannot access before initialization"问题?