Ошибка модульного теста Jest при импорте компонента
У меня есть серия юнит-тестов «шутливое изображение-снимок», настроенных с кукловодом рядом с соответствующими тестируемыми компонентами. Некоторые тестовые файлы не запускаются из-за импортированного соответствующего компонента. Сбой теста, по-видимому, основан не на самом тесте, блоке «it», а просто на операторе импорта компонента в верхней части файла, который импортирует соответствующий компонент в тот же каталог. Я могу запустить тест и получить ошибку без каких-либо реальных тестов, определенных в файле.
пример теста.
Manifesto.unit.spec.js
Я получаю следующее сообщение. (см. также ссылку сообщения об ошибке ниже). Кажется, что шутка следует за объектами до тех пор, пока не появится вызов graphQL, а затем терпит неудачу.
сообщение об ошибке терминала - файл конфигурации jest
Похоже, что Гэтсби неправильно настроен. Гэтсби связанные
graphql
вызовы должны оцениваться только во время компиляции, а затем компилироваться. К сожалению, что-то пошло не так, и запрос остался в скомпилированном коде.
Кажется, я смогу добавить что-нибудь в jest.config.js, чтобы этого не произошло. Возможно, я мог бы добавить под одним из следующих ключей: extensionPathIgnore, testPathIgnorePatterns или transformIgnorePatterns.
возможно соответствующие строки jest-config.
testPathIgnorePatterns: ['node_modules', '\\.cache', '<rootDir>.*/public', '<rootDir>/cypress', '<rootDir>/plugins/gatsby-source-drupal-i18n'],
transformIgnorePatterns: ['node_modules/(?!(@babel\/runtime|gatsby|gsap)/)'],
Я пробовал это безуспешно. Не уверен, что для jest требуется перезагрузка после изменения этих шаблонов в файле конфигурации. Из лекции fb по архитектуре jest кажется, что конфигурационный файл оценивается при каждом запуске теста. Кроме того, похоже, что шаблоны testPathIgnore не будут применяться ни к чему, что происходит после оценки testPath для самого файла. Любая помощь очень ценится.
Возможно, хорошие стартовые вопросы могут быть такими: почему шутка продолжает оценивать объекты за пределами импортированного компонента, является ли это необходимым, и если нет, как мне остановить это.
package.json devDependencies
"devDependencies": {
"@testing-library/jest-dom": "^5.15.0",
"@testing-library/react": "^11.2.7",
"babel-jest": "^26.0.0",
"enzyme": "^3.11.0",
"enzyme-adapter-react-16": "^1.15.2",
"enzyme-to-json": "^3.6.2",
"eslint": "^6.1.0",
"eslint-config-airbnb": "^18.0.1",
"eslint-config-prettier": "^6.10.0",
"eslint-import-resolver-babel-module": "^5.1.2",
"eslint-plugin-import": "^2.20.1",
"eslint-plugin-jsx-a11y": "^6.2.3",
"eslint-plugin-react": "^7.20.6",
"eslint-plugin-react-hooks": "^1.7.0",
"gatsby-cli": "^2.12.91",
"i": "^0.3.7",
"identity-obj-proxy": "^3.0.0",
"install": "^0.13.0",
"jest": "^26.0.0",
"jest-image-snapshot": "^4.5.1",
"jest-styled-components": "^7.0.0",
"prettier": "^2.0.2",
"react-test-renderer": "^16.13.0",
"yaml-jest": "^1.0.5"
},