При обновлении ReactNative до последней версии я столкнулся с множеством проблем с некоторыми тестами, которые раньше работали нормально.
at _next (.../node_modules/@babel/runtime/helpers/asyncToGenerator.js:22:9)
at .../node_modules/@babel/runtime/helpers/asyncToGenerator.js:27:7
at new Promise (<anonymous>)
...
at _next (.../node_modules/@babel/runtime/helpers/asyncToGenerator.js:22:9)
at .../node_modules/@babel/runtime/helpers/asyncToGenerator.js:27:7
at new Promise (<anonymous>)
...
node_modules/@babel/runtime/helpers/asyncToGenerator.js:22:9) {
cause: undefined
}
Странно и трудно понять, откуда возникла проблема, потому что в тесте нет никаких изменений, которые могли бы ее спровоцировать, поэтому это должно быть что-то, что было изменено в шутку, вавилоне или какой-то связанной зависимости.
"jest": "^29.3.1",
"@babel/core": "7.20.12"
"react-native": "0.71.1"
Есть идеи?
Впоследствии один из моих коллег обнаружил (спасибо, Гектор :)), что проблема заключалась в том, как jest
обрабатывать промисы в предыдущих версиях по сравнению с последней, просто выполняя обновление ReactNative версия за версией, а не от предыдущей до последней. один. Итак, мы обнаружили, что в выпусках , которые изменились с 0.70.6 (15 ноября 2022 г.) на 0.71.0-RC.1 (23 ноября 2022 г.), сломались наши тесты.
Это было связано с этим: полифиллинг Promise в Jest.
И одним из ключей было установить установочный файл в jest.config.js
:
setupFiles: ['./jest/setup.js'],
с этим конфигом:
global.__DEV__ = true;
global.Promise = jest.requireActual('promise');
Еще нам было полезно взглянуть на руководства по обновлению jest
Я надеюсь, что это поможет кому-то также, для нас было немного трудно обнаружить проблему. ;)