что такое адаптер в ферменте - PullRequest
2 голосов
/ 25 марта 2019

Любая документация о назначении adapter в enzyme библиотеке тестирования.

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

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

1 Ответ

3 голосов
/ 25 марта 2019

Любая документация о назначении adapter в enzyme библиотеке тестирования.

Самое близкое, что можно получить, это сказать "Вам нужно будет установить фермент вдольс адаптером, соответствующим версии реакции (или другой библиотеке компонентов пользовательского интерфейса), которую вы используете ".

Документы в основном объясняют, как настроить adapter, и на самом деле не говорят о егоцель.


что такое адаптер в ферменте


Короткая версия

API enzymeодинаково независимо от используемой версии React, но то, как React отображает и взаимодействует с отображаемыми изменениями, зависит от версии React.

adapter абстрагирует все, чтоизменяется в зависимости от версии React, поэтому код ядра enzyme может оставаться прежним.


Подробная версия

mount и shallow экспортируются из enzyme.Давайте сосредоточимся на mount.

mount - это функция, которая просто возвращает новый ReactWrapper.

ReactWrapper обеспечивает знакомый объект-оболочку с instance, setState, find и т. Д.

Реализация всех этих функций одинакова независимо от того, какиеверсия React, которую вы используете ...

... но поскольку React сама изменилась за эти годы , все детали реализации, которые меняются в зависимости от React версии ,удален с помощью адаптера.

Адаптер извлекается путем вызова getAdapter, и при первом использовании он проверяет узлы, переданные на mountи затем создайте renderer для фактического рендеринга узлов .

Для enzyme-adapter-react-16.3, который вызывает createRenderer, получает , перенаправленный на this.createMountRenderer и в пределах createMountRenderer вы можете увидеть знакомый ReactDOM.render вызов, где то, что вы передали, фактически отображается с использованием синтаксиса React v16 .


Поиск getAdapter в ReactWrapper.js везде показывает, что adapter используется для абстрагирования от функциональности, которая изменяется в зависимости от версии React при использовании mount ...

... и поиск getAdapter в ShallowWrapper.js везде показывает, что adapter используется для абстрагирования функциональности, которая изменяется в зависимости от версии React при использовании shallow.

...