有关adapter
测试库中enzyme
的目的的任何文档。
import { configure } from 'enzyme';
import Adapter from 'enzyme-adapter-react-16';
configure({ adapter: new Adapter() });
答案 0 :(得分:2)
有关
adapter
测试库中enzyme
的目的的任何文档。
文档主要只是解释如何配置adapter
,而没有真正谈论其目的。
什么是酶中的衔接子
简短版本
无论您使用的enzyme
是什么版本,React
API都是相同的,但是React
呈现方式和与呈现方式的交互方式取决于React
版本。
adapter
提取了基于React
版本的所有更改,因此核心enzyme
代码可以保持不变。
详细版本
mount
和shallow
均为exported from enzyme
。让我们专注于mount
。
mount
是just returns a new ReactWrapper
的功能。
ReactWrapper
为熟悉的包装对象提供instance
,setState
,find
等。
所有这些功能的实现都是相同的,而不管您使用的是React
的哪个版本...
...但是由于React
本身已经改变了多年,因此基于React
版本进行更改的所有实现细节都通过适配器进行了抽象。
通过调用getAdapter
来检索适配器,并且第一次使用该适配器是先访问validate the nodes passed to mount
,然后再访问create the renderer
to actually render the nodes。
对于enzyme-adapter-react-16.3
调用createRenderer
的用户获得routed to this.createMountRenderer
,在createMountRenderer
内您可以看到the familiar ReactDOM.render
call where what you passed is actually rendered using React
v16 syntax。
在ReactWrapper.js中搜索getAdapter
到处都显示adapter
用于提取使用React
时根据mount
版本而变化的功能。 ..
......并在ShallowWrapper.js中搜索getAdapter
时,到处都显示adapter
用于提取使用{{1 }}。