API нового контекста React с энзимом

Я использую фермент и очень люблю его. Он работает с react 16, пока я не захотел протестировать свой новый проект, который использует новый контекстный api react.

Если я визуализирую только свой базовый компонент, используя мелкий и консольный журнал отладки компонента, я могу видеть его содержимое, но когда я использую новый контекстный api с поставщиком и потребителем, я получаю <undefined /> в качестве вывода. Фермент не выводит компонент, а реагирует.

Может кто-нибудь дать некоторые рекомендации.

Спасибо.

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
12
0
6 392
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

А пока вот обходной путь:

const outer = shallow(<SimpleComp />);
const Children = outer.props().children({ /* context */ });
const wrapper = shallow(Children);

Чтобы использовать mount () с новым контекстным API, используйте этот ферментный пластырь.

Это очень помогло. Большое спасибо.

SamTheGoodOne 08.06.2018 14:41

Когда я пробую этот метод, я получаю сообщение об ошибке: «Дети - это не функция». Это особая версия фермента?

user5520186 03.07.2018 15:59

Я думаю, что Enzyme уже выпустил исправление, но не знаю, как его использовать. Кто-нибудь знает?

Enrique Moreno Tent 09.11.2018 11:16

Я бы сказал, что это правильнее: const outer = shallow(<SimpleComp />); const wrapper = outer.props().children({ /* context */ });

Are Butuv 05.12.2018 21:31

@EnriqueMorenoTent Где вы видели, что они его выпустили? Не удалось найти его в журнале изменений.

omerts 22.01.2019 10:39

Я не уверен, что смогу снова найти URL: /

Enrique Moreno Tent 22.01.2019 16:08

Я не думаю, что поддержка нового стиля Context API еще доступна в энзиме. См. github.com/facebook/react/pull/14329

Liu Nate 21.03.2019 21:35

Другие вопросы по теме