Используя последнюю версию библиотек, я сталкивался с той же ошибкой, о которой сообщалось в каждом ответе на этот вопрос. Ошибка: TypeError: Адаптер не является конструктором.
Я сгруппировал все необходимые шаги, чтобы правильно протестировать ваш компонент ReactJS с помощью Enzyme ( Я использовал Jest, но он может работать и с Mocha, в этом случае просто переключите основной тестовый пакет ):
1) Библиотеки (package.json) :
"dependencies": {
"jest": "^24.6.0",
(...)
}
"devDependencies": {
"chai": "^4.2.0",
"enzyme": "^3.7.0",
"enzyme-adapter-react-16": "^1.7.0",
(...)
}
2) НАСТРОЙКА ТЕСТА : Фермент можно настроить в каждом тесте. Но, как мудро предложено type_master_flash, вы можете добавить скрипт для этого. Для этого создайте новый параметр в вашем файле package.json на том же уровне сеансов сценарии, зависимости и т. Д. :
Jest Версия 23.x (или предыдущая):
"devDependencies": {
(...)
},
"jest": {
"setupTestFrameworkScriptFile": "./tests.setup.js"
},
После версии Jest 24.0: Согласно Документация Jest , " setupTestFrameworkScriptFile не рекомендуется в пользу setupFilesAfterEnv ".
"devDependencies": {
(...)
},
"jest": {
"setupFilesAfterEnv": ["./tests.setup.js"]
},
Этот файл может быть где угодно, и вы можете назвать его по своему желанию. Просто не забудьте установить правильное местоположение файла. В текущем примере я сохранил свой файл в корне моего проекта.
3) tests.setup.js : Как я обнаружил в Фермент: TypeError: Адаптер не является конструктором , проблема в том, что мы не можем " import '' модуль с экспортом по умолчанию". Правильный способ настройки вашего файла:
import Enzyme from 'enzyme';
import Adapter from 'enzyme-adapter-react-16';
Enzyme.configure({ adapter: new Adapter() });
Именно так и вы можете протестировать свои компоненты.
Приветствия и надеюсь, что это поможет.