【问题标题】:Jest encountered an unexpected token ReactJSJest 遇到了一个意外的令牌 ReactJS
【发布时间】:2019-03-22 00:09:42
【问题描述】:

我在我的 react 项目中设置了以下环境。 以下是 package.json 文件:-

 {
  "name": "testing",
  "version": "0.1.0",
  "private": true,
  "dependencies": {
    "react": "^16.5.2",
    "react-dom": "^16.5.2",
    "react-scripts": "2.0.5"
  },
  "scripts": {
    "start": "react-scripts start",
    "build": "react-scripts build",
    "test": "jest",
    "eject": "react-scripts eject"
  },
  "eslintConfig": {
    "extends": "react-app"
  },
  "browserslist": [
    ">0.2%",
    "not dead",
    "not ie <= 11",
    "not op_mini all"
  ],
  "devDependencies": {
    "babel-core": "^6.26.3",
    "babel-jest": "^23.6.0",
    "babel-loader": "^8.0.4",
    "babel-polyfill": "^6.26.0",
    "babel-preset-es2015": "^6.24.1",
    "babel-preset-react": "^6.24.1",
    "enzyme": "^3.7.0",
    "enzyme-adapter-react-16": "^1.6.0",
    "jest": "^23.6.0",
    "react-test-renderer": "^16.5.2"
  },
  "jest": {
    "setupTestFrameworkScriptFile": "<rootDir>/src/setupTest.js",
    "transform": {
      "\\.js$": "babel-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"
    ]
  },
  "babel": {
    "presets": [
      "react",
      "es2015"
    ]
  }
}

每当我运行npm test 命令时,它都会引发以下错误

我正在处理的组件文件如下所示:-

import React, { Component } from 'react';

class Increment extends Component {
    constructor() {
        super();
        this.state = {
          count: 0,
        }
      }

    makeIncrementer = amount => () =>
    this.setState(prevState => ({
        count: prevState.count + amount,
    }));

    increment = this.makeIncrementer(1);
    decrement = this.makeIncrementer(-1);

      render() {
        return (
          <div>
            <p>Count: {this.state.count}</p>
            <button className="increment" onClick={this.increment}>Increment count</button>
            <button className="decrement" onClick={this.decrement}>Decrement count</button>
          </div>
        )
      }
    }

export default Increment;

我写的测试用例如下:-

import React from 'react';
import { shallow } from 'enzyme';
import Increment from './increment';

describe('App component', () => {

    it('starts with a count of 0', () => {
        const wrapper = shallow(<Increment />);
        const text = wrapper.find('p').text();
        expect(text).toEqual('Count: 0');
    });
});

你能帮我解决这个问题吗?我尝试了 StackOverflow 上与此特定主题相关的所有解决方案,但无法解决。

【问题讨论】:

    标签: reactjs jestjs babeljs enzyme babel-jest


    【解决方案1】:

    这几天我遇到同样的问题并尝试了不同的解决方案,但它们对我不起作用。 然而,我的问题是通过修改 package.json 以使其具有 "test": "react-scripts test" 或将 "jest" 替换为 "react-scripts test " 在脚本下就像这样: package.json:

    "scripts": {
        "test": "react-scripts test",
    }
    

    【讨论】:

      【解决方案2】:

      安装babel-plugin-syntax-class-properties即可解决上述问题

      随后安装babel-plugin-transform-class-properties

      结合这两个插件帮助我成功运行了测试用例。

      【讨论】:

        【解决方案3】:
        makeIncrementer = amount => {
            this.setState(prevState => ({
              count: prevState.count + amount,
            }));
        }
        

        makeIncrementer 函数需要如上。

        【讨论】:

        • 仍然无法正常工作给出与发布的相同的错误。 @Sagar Kharche
        • 可以在这里发布您的组件文件吗? @Shwetank
        • 你找到解决方案了吗?
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-03-26
        • 1970-01-01
        • 2019-10-07
        • 2019-12-13
        • 1970-01-01
        相关资源
        最近更新 更多