哪种酶适配器适用于 React 17?

Sup*_*ade 32 unit-testing reactjs enzyme

我有一个 React 应用程序,我想开始用 Enzyme 编写单元测试。Enzyme 的文档讨论了高达 16 的 React 版本。

src/setupTests.js我目前有

import Enzyme from 'enzyme';
import Adapter from 'enzyme-adapter-react-16';

Enzyme.configure({ adapter: new Adapter() });
Run Code Online (Sandbox Code Playgroud)

但我的应用程序使用 React 版本 17.0.1。React 17 有什么酶接头?

Sup*_*ade 59

React 17 有什么酶接头?


如果你有React 版本 17,你可以使用这个非官方的 React 17 适配器​​来处理酶

// src/setupTests.js
import { configure } from 'enzyme';
import Adapter from '@wojtekmaj/enzyme-adapter-react-17';

configure({ adapter: new Adapter() });
Run Code Online (Sandbox Code Playgroud)

有关非官方适配器的更多信息,请参阅此GitHub 问题

  • 2022 年,React 17 仍未发布适配器 (11认同)
  • @Andrew Enzyme 正处于垂死阶段,只需去react-testing-library (6认同)
  • @TomStambaugh 你不应该测试实现细节,那是天真的。您应该旨在测试组件的行为,因此,如果您正确地抽象了组件并且行为发生了变化...您可以捕获它...测试实现细节超过了测试提供的好处,非常脆弱,甚至可能不会正确捕捉需求.. (3认同)

小智 6

我尝试使用非官方适配器“@wojtekmaj/enzyme-adapter-react-17”,效果很好。谢谢@super Jade。

  1. 清除 npm 缓存(清除这可能会使 npm 变慢,但请尝试一下)。
  • npm cache verify进而npm cache clean --force
  1. 删除你的
  • node_modulespackage-lock.json
  1. 更新你的 npm 依赖package.json"@testing-library/react": "^11.2.5","@wojtekmaj/enzyme-adapter-react-17": "^0.4.1","react": "^17.0.1","react-dom": "^17.0.1",
  2. npm i --legacy-peer-deps
  3. 正如@wojtekmaj/enzyme-adapter-react-17提到的在测试文件中进行更改。
  • 从以下位置导入适配器'@wojtekmaj/enzyme-adapter-react-17';
  • 配置({ adapter: new Adapter() });

  • 从版本“0.6.0”开始,安装“@wojtekmaj/enzyme-adapter-react-17”时,不再需要“--legacy-peer-deps”标志。照常进行!:) (3认同)

Has*_*eed 5

在 setupTests.js 文件中添加此代码

// jest-dom adds custom jest matchers for asserting on DOM nodes.
// allows you to do things like:
// expect(element).toHaveTextContent(/react/i)
// learn more: https://github.com/testing-library/jest-dom
import '@testing-library/jest-dom';
import Enzyme from 'enzyme';
import Adapter from '@wojtekmaj/enzyme-adapter-react-17';

Enzyme.configure({ adapter: new Adapter() });
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述