Enzyme 、ReactTestUtils和react测试库之间的区别是什么?

ReactTestUtils文档说明:

ReactTestUtils使得在测试中测试React组件变得很容易

Enzyme 文档只是说:

Ezyme是一个JavaScript测试工具,用于React,使其更简单

React测试库文档:

react测试库是一个非常轻量级的测试解决方案

为什么实际上每个解决方案都更容易,而另一个解决方案却无法实现什么?

推荐答案

ReactTestUtils为您提供了测试React组件的最低要求.我还没有看到它被用于大型apply.

Enzyme 和react 测试库都是很好的库,它们为您提供了测试应用程序所需的所有工具.但他们有两种不同的哲学.

Enzyme 允许您访问组件的内部工作.您可以读取并设置状态,还可以模拟子项以使测试运行得更快.

另一方面,react测试库不允许您访问任何实现细节.它呈现组件,并提供与它们交互的实用方法.这样做的目的是,您应该像用户那样与应用程序进行通信.因此,与其设置组件的状态,不如重现用户为达到该状态所做的操作.

根据我的经验,Enzyme 更容易掌握,但从长远来看,它更难维持.react测试库迫使您编写平均来说稍微复杂一点的测试,但它会让您对代码有更高的信心.

Reactjs相关问答推荐

如何使用React Router创建响应式主详细信息应用程序?

当我在React中使用类方法更新模型的状态时,它在严格模式下触发两次

导致类型错误的调度不是函数";

如何使用Reducer更新全局变量

props 可以在Reaction中锻造吗?

如何在MUI X数据网格列中显示IMG?

获取点击的国家/地区名称react 映射

FireBase未与Reaction应用程序连接

React中的useEffect钩子

为什么我得不到我想要的数据?

如何动态地改变<; Select >;React和Tailwind元素?

Mui 在 TextField 标签上添加工具提示显示两个工具提示框

ReactJS on AWS Amplify与EC2上的Spring boot服务之间的混合内容错误

无法读取未定义的属性(阅读 'editQuoteModalShown')reactredux

使用新数据更新时,React 不更新具有过滤功能的深层嵌套对象数组中的变量状态

为什么我的 Next.js (React) 组件只有在页面中时才有效?

损坏的图像 React useState

意外的标记.您可能需要一个合适的加载器来处理这种文件类型.书?.img? /*#__PURE__*/React.createElement("img",

如何在react 中更新子组件中的变量?

为什么 React 会多次调用我的应用程序的某些函数?