【问题标题】:React UnitTest with Jest and Enzyme用 Jest 和 Enzyme 反应单元测试
【发布时间】:2020-08-27 22:29:21
【问题描述】:

令我惊讶的是,许多博客都使用 Jest 和 Enzyme 为 React 应用程序编写单元测试。 不能,我们为 React 应用程序编写单元测试是使用唯一的玩笑还是唯一的 Enzyme??

如果是,要获得一个组件,我们在酶中使用了 shallow(),但在 Jest 中使用的是什么?

【问题讨论】:

标签: reactjs react-native testing jestjs enzyme


【解决方案1】:

我认为你没有完全理解jestenzyme 的概念。

开玩笑

TL;DR: Jest 只是一个为 JavaScript 开发类固醇的测试运行器(不仅仅是 react)。

jest 的主要功能是执行 JavaScript 测试。它为您提供了组织测试的工具,例如使用describeittest 块。 jest 带有很多 build-in assertions(例如 expect(actual).toBe(expected))来帮助您识别失败和成功的测试。最重要的是jest 带有附加功能,例如它允许您轻松地mock functions 甚至complete modules

jest 通常绑定到react,但与react 结合使用效果很好,因为它由facebook 维护,就像react 本身一样。所以基本上每次都是正确的joice和recommended by react

TL;DR: 实用程序集合,用于简化react 组件的测试/渲染。

从技术上讲,您不需要Enzyme 或任何其他框架来测试react 组件(仅jest)。 react 已经公开了 react-dom/test-utils,但是如果没有正确包装和简化其 API,那么与这些人一起工作真的很麻烦。这正是enzyme 正在做的事情。它基本上在react-dom/test-utils 之上放置了一层抽象,并添加了一堆实用程序,因此您无需担心自己实现它们。


我强烈建议您查看react-testing-library,这是enzyme 的替代品,并阅读其创始人撰写的"Testing Implementation Details" blog postreact-testing-library 就像jestrecommended by react

【讨论】:

    【解决方案2】:

    JestEnzyme 没有可比性。

    Jest 不会为您提供丰富的 API/函数来访问诸如酶之类的 dom 元素,但它会执行其他重要任务,例如当您点击命令 npm testnpm run test 时会收集所有测试文件,例如所有以 .test 结尾的文件.js 在这些文件中运行每个测试用例,并在控制台中显示结果,就像它的笑话一样。

    Jest 是一个测试框架或测试运行程序,它可以一次性运行所有测试文件,酶是一个实用程序或库,与 jest 相比,它认为这是一个更小的东西,它提供了许多函数来轻松访问 dom,例如 shallow, mount, find, children, etc...

    【讨论】:

      猜你喜欢
      • 2018-12-16
      • 1970-01-01
      • 2018-08-30
      • 2019-05-06
      • 2023-03-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-26
      相关资源
      最近更新 更多