开玩笑遇到了意外的令牌

Leo*_*ban 8 javascript reactjs jestjs

不知道为什么在这条线上抱怨:

const wrapper = shallow(<BitcoinWidget {...props} />);

在此处输入图片说明

整个测试:

import React from 'react';
import { shallow } from 'enzyme';
import toJson from 'enzyme-to-json';

// Local components
import BitcoinWidget from './bitcoinWidget';

const props = {
  logo: 'foobar',
  coin: {
    price: 0
  },
  refresh: jest.fn()
}

describe('when rendering', () => {
  const wrapper = shallow(<BitcoinWidget {...props} />);

  it('should render a component matching the snapshot', () => {
    const tree = toJson(wrapper);
    expect(tree).toMatchSnapshot();
    expect(wrapper).toHaveLength(1);
  });
});
Run Code Online (Sandbox Code Playgroud)

组件

import React from 'react';

const BitcoinWidget = ({ logo, coin : { price }, refresh }) => {
  return (
    <div className="bitcoin-wrapper shadow">
      <header>
        <img src={logo} alt="Bitcoin Logo"/>
      </header>
      <div className="price">
        Coinbase
        ${price}
      </div>
      <button className="btn striped-shadow white" onClick={refresh}>
        <span>Refresh</span>
      </button>
    </div>
  );
}

export default BitcoinWidget;
Run Code Online (Sandbox Code Playgroud)

还有我的package.json

{
  "name": "bitcoin",
  "version": "0.1.0",
  "private": true,
  "dependencies": {
    "axios": "^0.18.0",
    "react": "^16.4.2",
    "react-dom": "^16.4.2",
    "react-redux": "^5.0.7",
    "react-scripts": "1.1.5",
    "redux": "^4.0.0",
    "redux-thunk": "^2.3.0"
  },
  "scripts": {
    "start": "react-scripts start",
    "build": "react-scripts build",
    "eject": "react-scripts eject",
    "test": "yarn run test-jest:update --verbose --maxWorkers=2",
    "test-jest:update": "jest src --updateSnapshot",
    "test-jest": "jest src"
  },
  "now": {
    "name": "bitcoin",
    "engines": {
      "node": "8.11.3"
    },
    "alias": "leongaban.com"
  },
  "jest": {
    "verbose": true,
    "moduleNameMapper": {
      "\\.(jpg|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga)$": "<rootDir>/client/assetsTransformer.js"
    },
    "moduleFileExtensions": [
      "js",
      "jsx"
    ],
    "moduleDirectories": [
      "node_modules"
    ]
  },
  "devDependencies": {
    "enzyme": "^3.4.4",
    "enzyme-to-json": "^3.3.4",
    "jest": "^23.5.0"
  }
}
Run Code Online (Sandbox Code Playgroud)

pau*_*n22 14

对于任何使用 create-react-app 的人来说,在使用 create-react-app 时只能更改 package.json 中的某些 jest 配置。

我在 Jest 选取内部库时遇到问题,无论我从该库导入什么地方,Jest 都会显示“意外令牌”错误。

要解决此问题,您可以将测试脚本更改为以下内容: "test": "react-scripts test --transformIgnorePatterns 'node_modules/(?!(<your-package-goes-here>)/)'",

  • 我有一个 CRA TS 应用程序,在测试时遇到“axios”导入错误。我将测试脚本更新为 `react-scripts test --transformIgnorePatterns \"node_modules/(?!axios)/\" --env=jsdom` 并且它有效。谢谢! (3认同)

Ali*_*Ali 12

对于那些在这个问题上苦苦挣扎并且上述答案都不适合他们的人。

经过很长时间的搜索,我找到了这个解决方案:

编辑jest.config.js添加transformIgnorePatterns

//jest.config.js

module.exports = {
    preset: 'ts-jest',
    testEnvironment: 'jsdom',
    testMatch: ["**/__tests__/**/*.ts?(x)", "**/?(*.)+(test).ts?(x)"],
    transform: {
        "^.+\\.(js|ts)$": "ts-jest",
    },
    transformIgnorePatterns: [
        "/node_modules/(?![@autofiy/autofiyable|@autofiy/property]).+\\.js$",
        "/node_modules/(?![@autofiy/autofiyable|@autofiy/property]).+\\.ts$",
        "/node_modules/(?![@autofiy/autofiyable|@autofiy/property]).+\\.tsx$",
    ],
}
Run Code Online (Sandbox Code Playgroud)

将要忽略的包放入其中[]并用分隔符分隔|

就我而言[@autofiy/autofiyable|@autofiy/property]


Sak*_*oor 5

将此添加到您的package.json笑话配置中。

"transform": {
      "\\.js$": "<rootDir>/node_modules/babel-jest"
    },
Run Code Online (Sandbox Code Playgroud)

如果问题仍然存在,请告诉我。

  • 我也错过了`babel-plugin-transform-es2015-destructuring``babel-plugin-transform-object-rest-spread``enzyme-adapter-react-15``eslint-config-airbnb` (2认同)

Rog*_*rez 5

我将笑话更新添加到了我的package.json

"jest": {
  "transformIgnorePatterns": [
    "node_modules/(?!(<package-name>|<second-package-name>)/)"
  ]
},
Run Code Online (Sandbox Code Playgroud)

|<second-package-name>如果不需要,请随意删除。

您也可以将其作为脚本的一部分,如@paulosullivan22所述

"test": "react-scripts test --transformIgnorePatterns 'node_modules/(?!(<package-name>)/)'"