酶中的接头是什么

IT技术 reactjs jestjs enzyme reactjs-testutils
2021-05-01 15:44:38

什么是目的的任何文档adapterenzyme测试库。

import { configure } from 'enzyme';
import Adapter from 'enzyme-adapter-react-16';

configure({ adapter: new Adapter() });
1个回答

什么是目的的任何文档adapterenzyme测试库。

最接近的是说“您将需要安装酶以及与您正在使用的 react(或其他 UI 组件库)版本相对应的适配器”

文档主要只是解释如何配置一个adapter,并没有真正谈论它的目的。


酶中的接头是什么


简洁版本

enzymeAPI是不管的版本相同React,你正在使用,但如何React呈现和交互什么取决于呈现的变化React版本。

adapter抽象了改变基础上,任何React版本,因此核心enzyme代码保持不变。


详细版

mount并且shallowenzyme. 让我们专注于mount.

mount是一个只返回一个 newReactWrapper的函数

ReactWrapper提供熟悉的包装对象与instancesetStatefind等。

无论React您使用的是哪个版本,所有这些功能的实现都是相同的......

...但是因为React多年来它本身已经发生了变化,任何基于React版本变化的实现细节都被一个适配器抽象掉了。

适配器是通过调用检索的getAdapter,第一次使用它是验证传递给的节点mount,然后创建renderer以实际呈现节点

对于enzyme-adapter-react-16.3该调用createRenderer获取路由到this.createMountRenderer和内部,createMountRenderer您可以看到熟悉的ReactDOM.render调用,其中您传递的内容实际上是使用Reactv16 语法呈现的


getAdapterReactWrapper.js搜索显示到处adapter都用于抽象出在使用时基于React版本更改的功能mount......

...并getAdapterShallowWrapper.js搜索显示所有adapter用于抽象功能的地方,这些功能React在使用shallow.