reactjs - enzyme 和 react 测试库之间的区别

标签 reactjs unit-testing testing enzyme react-testing-library

Enzyme 和 React Testing Library 之间有什么区别?我应该使用哪个来在 React 项目中进行测试?

enzyme :https://www.npmjs.com/package/enzyme

React 测试库:https://www.npmjs.com/package/@testing-library/react

最佳答案

在 Enzyme 中,我们使用组件的状态和属性来测试组件。这通常意味着测试是脆弱的。假设我们已经为一个组件编写了测试并且它运行良好。但是,如果有人更改了组件中 state 或 props 的变量名,那么即使组件的功能没有改变,我们的测试也会失败。这种行为表明了测试的脆弱性。

而在 React 测试库中,我们从用户的角度来测试组件。假设我们要测试一个下拉组件,我们不会根据它的状态和 Prop 来测试该组件。相反,我们使用 DOM 元素来测试它,测试用户如何与它交互。

React 测试库的主要目的是通过以用户使用它们的方式测试您的组件来提高您对测试的信心。用户不关心幕后发生的事情,他们只是看到输出并与之交互。您无需访问组件的内部 API 或评估它们的状态,而是通过基于组件输出编写测试来获得更多信心。

在某些时候,React 测试库的使用比 Enzyme 更广泛。

enter image description here

关于reactjs - enzyme 和 react 测试库之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72429044/

相关文章:

javascript - 为所有请求动态设置 header (React、super-agent)

javascript - 如何在 React 中使用 fetch 和表单数据来发布对象?

unit-testing - 在 "TypeError: create is not a function"中使用 Jest 模拟 (Zustand) 函数模拟

python - 如何在 Django 中对 ListView 的 get_context_data() 进行单元测试?

javascript - 无法使用 cypress 切换到新选项卡或窗口

reactjs - 在 React 应用程序中保护 Firebase API key 使其无法公开访问的最佳方法是什么?

reactjs - 迁移到 Material-UI v5 时,如何处理条件类?

javascript - 模拟 jQuery 来测试基本使用

unit-testing - Codeception验收测试不点击按钮

c# - VS2010 Test Professional/Team Server 的替代品?