Любая документация о назначении 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
.