После вечернего стука в голову по этому вопросу, я думаю, что наконец-то решил его.Сначала позвольте мне описать проблему:
Я также получаю:
TypeError: environment.teardown is not a function
Поскольку я пытался обновить Jest до последней версии.При запуске приложения с помощью Create-React-App оно устанавливает более раннюю версию Jest, которая не включает в себя все функции.Мне было интересно использовать функцию inlineSnapshots, которая позволяет вам утверждать визуализированные компоненты в разметке HTML внутри вашего тестового файла.
Есть несколько вещей, которые не включены в документацию Create-React-App или jest, которую выдолжен знатьЕсли вы хотите использовать новые функции jest, такие как inlineSnapshots, вам нужно сделать следующее:
- пряжа добавить свежую версию jest и jest-environment-jsdom
- пряжа добавитьprettier --dev (Это облегчает перезапись обратно в исходный файл.)
- Добавьте блок jest env в самый верх каждого тестового сценария.
Докблок - этоКомментарий блока JS с прагматической отметкой "@".Для настройки среды jest вы должны добавить это в начало каждого тестового файла:
/**
* @jest-environment jsdom
*/
Это указывает jest запустить тест в среде jsdom, которая должна соответствовать тому, что передается в разделе тестовых скриптовваш пакет.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 работать.