Jest 遇到意外令牌 [英] Jest encountered an unexpected token

查看:20
本文介绍了Jest 遇到意外令牌的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

const wrapper = Shallow();

整个测试:

从'react'导入React;从酶"导入{浅};从'enzyme-to-json'导入toJson;//本地组件从'./bitcoinWidget'导入BitcoinWidget;const 道具 = {标志:'foobar',硬币: {价格:0},刷新: jest.fn()}描述('渲染时',()=> {const wrapper = Shallow(<BitcoinWidget {...props}/>);it('应该渲染一个与快照匹配的组件', () => {const tree = toJson(wrapper);期望(树).toMatchSnapshot();期望(包装器).toHaveLength(1);});});

组件

从'react'导入React;const BitcoinWidget = ({ logo, coin : { price }, refresh }) =>{返回 (<div className="bitcoin-wrapper shadow"><标题><img src={logo} alt="比特币标志"/></标题><div className="价格">币库${价格}

<button className="btn striped-shadow white" onClick={refresh}><span>刷新</span>

);}导出默认的 BitcoinWidget;

还有我的 package.json

<代码>{"name": "比特币",版本":0.1.0",私人":真的,依赖关系":{"axios": "^0.18.0",反应":^ 16.4.2","react-dom": "^16.4.2","react-redux": "^5.0.7",反应脚本":1.1.5","redux": "^4.0.0","redux-thunk": "^2.3.0"},脚本":{开始":反应脚本开始","build": "react-scripts build","eject": "react-scripts 弹出","test": "yarn run test-jest:update --verbose --maxWorkers=2","test-jest:update": "jest src --updateSnapshot","test-jest": "jest src"},现在": {"name": "比特币",引擎": {节点":8.11.3"},别名":leongaban.com"},开玩笑":{详细":真实,模块名称映射器":{"\.(jpg|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga)$": "<rootDir>/客户端/资产Transformer.js"},模块文件扩展名":["js",jsx"],模块目录":[节点模块"]},开发依赖":{"酶": "^3.4.4","酶转json": "^3.3.4",开玩笑":^23.5.0"}}

解决方案

将此添加到您的 package.json jest 配置中.

转换":{"\.js$": "/node_modules/babel-jest"},

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

Not sure why it's complaining on this line:

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

Entire test:

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);
  });
});

The component

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;

And my 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"
  }
}

解决方案

Add this in your package.json jest config.

"transform": {
      "\.js$": "<rootDir>/node_modules/babel-jest"
    },

Let me know if the issue still persists.

这篇关于Jest 遇到意外令牌的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
前端开发最新文章
热门教程
热门工具
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆