Jest не проанализировал, чтобы импортировать файл - PullRequest
0 голосов
/ 12 марта 2020

Я пытаюсь протестировать свой проект Next. js с помощью Jest и Enzyme. Когда я пытаюсь импортировать файл из моих компонентов, чтобы проверить его, выдается ошибка. Вот мои файлы ...

В пакете. json Моя шутливая конфигурация:

 "jest": {
"setupFilesAfterEnv": "<rootDir>/jest.setup.js",
"testPathIgnorePatterns": [
  "<rootDir>/.next/",
  "<rootDir>/node_modules/"
],
"transform": {
  "\\.(gql|graphql)$": "jest-transform-graphql",
  ".*": "babel-jest",
  "^.+\\.js?$": "babel-jest"
}


 },

  "//": "I prefer this over a .babelrc file",
  "babel": {
    "env": {
      "development": {
        "presets": [
          "next/babel"
        ],
        "plugins": [
          [
            "styled-components",
            {
              "ssr": true,
              "displayName": true
            }
          ]
        ]
      },
      "production": {
        "presets": [
          "next/babel"
        ],
        "plugins": [
          [
            "styled-components",
            {
              "ssr": true,
              "displayName": true
            }
          ]
        ]
      },
      "test": {
        "presets": [
          [
            "next/babel",
            {
              "preset-env": {
                "modules": "commonjs"
              }
            }
          ]
        ],
        "plugins": [
          [
            "styled-components",
            {
              "ssr": true,
              "displayName": true
            }
          ]
        ]
      }
    }
  }

И впоследствии в jest.setup. js:

import Enzyme from 'enzyme';
import Adapter from 'enzyme-adapter-react-16';

Enzyme.configure({ adapter: new Adapter() });

Однако я всегда сталкиваюсь с этой ошибкой в ​​любое время, когда я хочу ** импортировать файл ** (Здесь, например, я пытаюсь импортировать файл, а именно "import ItemComponent из '../components/Item';"):

Jest обнаружил неожиданный токен

Обычно это означает, что вы пытаетесь импортировать файл, который Jest не может анализ, например, это не просто JavaScript.

По умолчанию, если Jest видит конфигурацию Babel, он будет использовать ее для преобразования ваших файлов, игнорируя "node_modules". Ошибка синтаксиса: неожиданный идентификатор

Подробности:

SyntaxError: C:\Users\Welcome\Desktop\Advanced-React-master\sick-fits\frontend\__tests__\Item.test.js: Unexpected token (20:28)

  18 | describe('<Item/>', () => {
  19 |   it('renders and matches the snapshot', () => {
> 20 |     const wrapper = shallow(<ItemComponent item={fakeItem} />);
     |                             ^
  21 |     expect(wrapper).toMatchSnapshot();
  22 |   });
  23 |   // it('renders and displays properly', () => {

  at Parser.raise (node_modules/@babel/parser/lib/index.js:3939:15)
  at Parser.unexpected (node_modules/@babel/parser/lib/index.js:5248:16)
  at Parser.parseExprAtom (node_modules/@babel/parser/lib/index.js:6328:20)
  at Parser.parseExprSubscripts (node_modules/@babel/parser/lib/index.js:5924:21)
  at Parser.parseMaybeUnary (node_modules/@babel/parser/lib/index.js:5903:21)
  at Parser.parseExprOps (node_modules/@babel/parser/lib/index.js:5812:21)
  at Parser.parseMaybeConditional (node_modules/@babel/parser/lib/index.js:5784:21)
  at Parser.parseMaybeAssign (node_modules/@babel/parser/lib/index.js:5731:21)
  at Parser.parseExprListItem (node_modules/@babel/parser/lib/index.js:6995:18)
  at Parser.parseCallExpressionArguments (node_modules/@babel/parser/lib/index.js:6124:22)

Любая помощь будет оценена

1 Ответ

0 голосов
/ 12 марта 2020

Попробуйте удалить эти две строки из вашего package.json:

  ".*": "babel-jest",
  "^.+\\.js?$": "babel-jest"

Теоретически, они не должны быть необходимы: https://jestjs.io/docs/en/configuration#transform -objectstring-pathtotransformer - pathtotransformer-object

Возможно, добавленная вами пользовательская конфигурация вызывает проблемы. Теоретически, jest должен преобразовать ваши js файлы по умолчанию, используя babel-jest. У меня определенно была недавняя работа над проектом JS с jest без конфигурации babel-jest, объявленной в моем package.json.

...