Прежде всего, убедитесь, что у вас есть тесты на утечку, запустив jest с опцией: jest --logHeapUsage
Запустите свои тесты и убедитесь, что потребление памяти со временем увеличивается, например (имена файлов изменены ):
PASS __tests__/pages/file.test.tsx (181 MB heap size)
PASS __tests__/pages/file2.test.tsx (193 MB heap size)
PASS __tests__/components/Header/file3.test.tsx (201 MB heap size)
PASS __tests__/components/Header/file4.test.tsx (192 MB heap size)
PASS __tests__/components/Header/file5.test.tsx (218 MB heap size)
PASS __tests__/pages/file6.test.tsx (201 MB heap size)
PASS __tests__/components/file6.test.tsx (203 MB heap size)
PASS __tests__/components/file7.test.tsx (213 MB heap size)
PASS __tests__/components/file8.test.tsx (234 MB heap size)
PASS __tests__/components/file9.test.tsx (222 MB heap size)
PASS __tests__/components/file10.test.tsx (240 MB heap size)
PASS __tests__/components/file11.test.tsx (231 MB heap size)
PASS __tests__/utils/file12.test.tsx (239 MB heap size)
PASS __tests__/components/file13.test.tsx (251 MB heap size)
PASS __tests__/components/file14.test.tsx (239 MB heap size)
PASS __tests__/components/file15.test.tsx (249 MB heap size)
PASS __tests__/components/file16.test.tsx (143 MB heap size)
Чтобы исправить это, измените команду npm run test
или yarn test
в package.json
на: node --expose-gc ./node_modules/.bin/jest --runInBand --logHeapUsage
Запустите команду. Вот мой результат:
PASS __tests__/components/file.test.tsx (143 MB heap size)
PASS __tests__/pages/onboarding/file1.test.tsx (149 MB heap size)
PASS __tests__/components/file2.test.tsx (146 MB heap size)
PASS __tests__/components/file3.test.tsx (146 MB heap size)
PASS __tests__/components/file4.test.tsx (153 MB heap size)
PASS __tests__/components/Header /file5.test.tsx (149 MB heap size)
PASS __tests__/pages/file6.test.tsx (149 MB heap size)
PASS __tests__/pages/file7.test.tsx (149 MB heap size)
PASS __tests__/components/file8.test.tsx (147 MB heap size)
PASS __tests__/components/file9.test.tsx (148 MB heap size)
PASS __tests__/pages/file10.test.tsx (148 MB heap size)
PASS __tests__/components/Header /file11.test.tsx (148 MB heap size)
PASS __tests__/functions/file12.test.tsx (149 MB heap size)
PASS __tests__/components/file13.test.tsx (148 MB heap size)
PASS __tests__/components/file14.test.tsx (150 MB heap size)
PASS __tests__/components/file15.test.tsx (150 MB heap size)
PASS __tests__/components/Header /file16.test.tsx (149 MB heap size)
PASS __tests__/components/file17.test.tsx (149 MB heap size)
PASS __tests__/utils/file18.test.tsx (150 MB heap size)
PASS __tests__/components/file19.test.tsx (149 MB heap size)
PASS __tests__/pages/file20.test.tsx (150 MB heap size)
Как видите, потребление памяти намного более стабильно.
Подробнее об этой проблеме и ее решении вы можете прочитать в этой проблеме Github , в котором описывается проблема негерметичного сборщика мусора с помощью jest.