有没有关于 enzyme
测试库中 adapter
目的的文档?
import { configure } from 'enzyme';
import Adapter from 'enzyme-adapter-react-16';
configure({ adapter: new Adapter() });
有没有关于 enzyme
测试库中 adapter
目的的文档?
import { configure } from 'enzyme';
import Adapter from 'enzyme-adapter-react-16';
configure({ adapter: new Adapter() });
adapter
的目的的任何文档都没有。最接近的解释是说"您需要安装与您使用的react版本(或其他UI组件库)相对应的适配器,以及enzyme"。文档主要只是解释如何配置adapter
,并没有真正讨论它的目的。
简短版
enzyme
API在使用任何版本的React
时都是相同的,但是React
渲染和与所呈现内容交互的方式会根据React
版本而有所不同。
adapter
将基于React
版本更改的任何内容抽象出来,因此核心的enzyme
代码可以保持不变。
详细版
mount
和 shallow
都是从 enzyme
导出的。让我们关注 mount
。
mount
是一个函数,只返回一个新的 ReactWrapper
。
ReactWrapper
提供了熟悉的包装对象,其中包括 instance
, setState
, find
等。
getAdapter
来检索适配器,第一次使用它是为了验证传递给mount
的节点, 然后创建renderer
以实际呈现这些节点。createRenderer
的enzyme-adapter-react-16.3
,它会路由到this.createMountRenderer
,在createMountRenderer
中,您可以看到熟悉的ReactDOM.render
调用,其中使用React
v16语法呈现传递的内容。请注意,和占位符应保留。
getAdapter
,可以发现在使用mount
时,adapter
用于抽象出根据React
版本而变化的功能。getAdapter
,可以发现在使用shallow
时,adapter
用于抽象出根据React
版本而变化的功能。