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

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

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

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

person Sai Ram    schedule 25.03.2019    source источник
comment
npmjs.com/package/enzyme-adapter-react-16   -  person SakoBu    schedule 25.03.2019
comment
Я посмотрел там, все, что они упомянули, это как установить и какую версию установить.   -  person Sai Ram    schedule 25.03.2019


Ответы (1)


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

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

Документы в основном просто объясняют, как настроить adapter, и не говорят о его назначении.


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


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

enzyme API один и тот же независимо от используемой вами версии 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.

person Brian Adams    schedule 25.03.2019