什么是酶中的衔接子

时间:2019-03-25 18:36:09

标签: reactjs jestjs enzyme reactjs-testutils

有关adapter测试库中enzyme的目的的任何文档。

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

configure({ adapter: new Adapter() });

1 个答案:

答案 0 :(得分:2)

  

有关adapter测试库中enzyme的目的的任何文档。

最接近的是"You will need to install enzyme along with an Adapter corresponding to the version of react (or other UI Component library) you are using"

文档主要只是解释如何配置adapter,而没有真正谈论其目的。


  

什么是酶中的衔接子


简短版本

无论您使用的enzyme是什么版本,React API都是相同的,但是React呈现方式和与呈现方式的交互方式取决于React版本。

adapter提取了基于React版本的所有更改,因此核心enzyme代码可以保持不变。


详细版本

mountshallow均为exported from enzyme。让我们专注于mount

mountjust returns a new ReactWrapper的功能。

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

所有这些功能的实现都是相同的,而不管您使用的是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 }}。