Ошибка модульного теста 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"
},

0 ответов

Другие вопросы по тегам