Я не могу протестировать приложение, созданное с помощью create-react-app.
Во всех руководствах говорится, что тест работает по умолчанию, но когда я пробую «тест пряжи», он требует установки 'jest-cli' и после установки выдает ошибку:
TypeError: environment.teardown is not a function
@MstrQKN ооо, спасибо, чувак, я не мог понять это 2 дня, очень тебе благодарен
Я добавлю свой комментарий в качестве ответа, пожалуйста, подтвердите ответ, чтобы вопрос закрылся :)



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Вам не нужно устанавливать jest-cli самостоятельно. Он должен выйти из коробки.
Попробуйте следующее:
npm install или yarn install.тогда как протестировать отдельный файл? тест npm?
Не совсем уверен, Вейцзин, но я думаю, что ваш ответ должен быть здесь: github.com/facebook/create-react-app/blob/master/packages/…
@WeijingJayLin, тестовые файлы jest на основе шаблонов для сопоставления файлов. Если вы хотите протестировать отдельный файл, вы должны указать конкретный шаблон для его имени. yarn run test /specificfolder/otherspecific/file.spec.js Если этот шаблон соответствует только одному файлу. Затем вы протестируете только один файл. тот, который ты хочешь!
если вы использовали create-react-app, убедитесь, что "test": "react-scripts test --env=jsdom" - ваш тестовый сценарий.
В моем случае это вызывает эту ошибку, потому что я создаю свой проект React с помощью create-react-app и устанавливаю jest. В определенном смысле это противоречит.
Я решать удаляю jest из моего проекта и использую тестовый скрипт create-react-app.
Добавьте свежую версию jest-environment-jsdom в файл package.json.
Здравствуйте! Старайтесь избегать комментариев в ответе, если у вас нет "конкретных подробностей" ответа. Пожалуйста, используйте поле для комментариев ниже, и как только вы наберете достаточную репутацию, вы сможете комментировать любой пост. :)
Это меня вдохновило и сработало, npm i -D jest-environment-jsdom@24
После вечера, когда я ломал голову над этим вопросом, я думаю, что наконец решил его. Сначала позвольте мне описать проблему:
Я также получал:
TypeError: environment.teardown is not a function
Потому что я пытался обновить Jest до последней версии. При запуске приложения с помощью Create-React-App устанавливается более ранняя версия Jest, которая не включает все функции. Мне было интересно использовать функцию inlineSnapshots, которая позволяет вам утверждать визуализированные компоненты по разметке HTML внутри вашего тестового файла.
Есть несколько вещей, не включенных в документацию Create-React-App или Jest, о которых вам следует знать. Если вы хотите использовать новые функции Jest, например inlineSnapshots, вам необходимо сделать следующее:
Докблок - это комментарий блока JavaScript с прагматической меткой «@». Для настройки среды Jest вы должны добавить это в начало каждого тестового файла:
/**
* @jest-environment jsdom
*/
Это дает команду jest запустить тест в среде jsdom, которая должна соответствовать тому, что передается в разделе тестовых сценариев вашего файла package.json. Мой выглядит примерно так (игнорируйте части с response-app-rewired):
"scripts": {
"start": "yarn run flow && react-app-rewired start",
"build": "yarn run flow && react-app-rewired build",
"test": "react-scripts test --env=jsdom"
}
После всего этого я наконец смог заставить работать inlineSnapshots.
Для меня это была привязка импорта модуля. По сути, для меня это была привязка экспорта / импорта модуля.
Обычно, если он был экспортирован с использованием module.export, вы должны импортировать с помощью require. Если он был экспортирован с использованием export или export default, вам следует импортировать с помощью import.
Здесь не допускается смешивание.
module.export? Не module.exports?
Если вы не использовали create-react-app для проекта:
jest, jest-cli, jest-environment-jsdom из package.json.npm --save i или yarn add, чтобы установить их все, чтобы у всех была одна и та же версия.Это должно сработать!
В моем случае мне не хватало пакета jest-environment-jsdom.
Вам не нужно устанавливать jest-cli самостоятельно, он должен быть готов к работе. Сделайте это: удалите package-lock.json, yarn.lock, node_modules, удалите jest из зависимостей в package.json, затем выполните установку npm и установку пряжи.