酶和反应测试库之间的区别
Difference between Enzyme and React Testing Library
Enzyme 和 React 测试库有什么区别,在 React 项目中我应该使用哪个进行测试?
酶:https://www.npmjs.com/package/enzyme
React 测试库:https://www.npmjs.com/package/@testing-library/react
在 Enzyme 中,我们使用组件的状态和属性来测试组件。这通常意味着测试是脆弱的。假设我们已经为一个组件编写了测试并且 运行 没问题。但是,如果有人更改了组件中 state 或 props 的变量名,那么即使组件的功能没有改变,我们的测试也会失败。这种行为证明了测试的脆弱性。
而在 React 测试库中,我们从用户的角度来测试组件。假设我们要测试一个 drop-down 组件,我们不会根据它的状态和属性来测试该组件。相反,我们使用 DOM 元素来测试它,看看用户如何与它交互。
React 测试库的主要目的是通过以用户使用它们的方式测试您的组件来提高您对测试的信心。用户不关心幕后发生的事情,他们只是看到输出并与之交互。您无需访问组件的内部 API 或评估它们的状态,而是通过基于组件输出编写测试来获得更多信心。
在某些时候,React 测试库的使用比 Enzyme 更广泛。
Enzyme 和 React 测试库有什么区别,在 React 项目中我应该使用哪个进行测试?
酶:https://www.npmjs.com/package/enzyme
React 测试库:https://www.npmjs.com/package/@testing-library/react
在 Enzyme 中,我们使用组件的状态和属性来测试组件。这通常意味着测试是脆弱的。假设我们已经为一个组件编写了测试并且 运行 没问题。但是,如果有人更改了组件中 state 或 props 的变量名,那么即使组件的功能没有改变,我们的测试也会失败。这种行为证明了测试的脆弱性。
而在 React 测试库中,我们从用户的角度来测试组件。假设我们要测试一个 drop-down 组件,我们不会根据它的状态和属性来测试该组件。相反,我们使用 DOM 元素来测试它,看看用户如何与它交互。
React 测试库的主要目的是通过以用户使用它们的方式测试您的组件来提高您对测试的信心。用户不关心幕后发生的事情,他们只是看到输出并与之交互。您无需访问组件的内部 API 或评估它们的状态,而是通过基于组件输出编写测试来获得更多信心。
在某些时候,React 测试库的使用比 Enzyme 更广泛。