Jest酶浅意外令牌<

时间:2018-01-07 13:19:53

标签: reactjs jestjs enzyme

我正在尝试使用酶来测试反应成分,但即使使用最基本的例子也无法启动。

import React from 'react'
import { shallow,render,mount,configure } from 'enzyme'
import Adapter from 'enzyme-adapter-react-16';
import {LoginPage} from '../../../app/components/login/LoginPage'

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

test('should say hello',() => {
    const loginPage = shallow(<LoginPage />)
    expect(loginPage.contains('Hello').toBe(true))
})

运行时,我收到以下错误: -

Test suite failed to run

    D:/code/github/metallica2/metallica/client/src/app/__tests__/components/login/LoginPage.test.js: Unexpected token (9
:30)
         7 |
         8 | test('should say hello',() => {
      >  9 |     const loginPage = shallow(<LoginPage />)
           |                               ^
        10 |     expect(loginPage.contains('Hello').toBe(true))
        11 | })

我在这里做错了什么?

谢谢,

阿玛尔

3 个答案:

答案 0 :(得分:5)

我能够通过在.babelrc

中引入以下内容来解决这个问题
{
  "env": {
    "test": {
      "presets": ["env", "react", "stage-2"],
      "plugins": ["transform-export-extensions"],
      "only": [
        "./**/*.js",
        "node_modules/jest-runtime"
      ]
    }
  }
}

并安装以下dev依赖项: -

"babel-plugin-transform-export-extensions"
"enzyme-adapter-react-16"
"jest-cli"
"react-test-renderer"

答案 1 :(得分:2)

这是Jest不了解JSX导出的问题。

您可以通过在.babelrc文件中添加以下行来解决此问题:

"env": {
    "test": {
      "presets": ["@babel/preset-env", "@babel/preset-react"],
      "plugins": ["transform-export-extensions"],
      "only": [
        "./**/*.js",
        "node_modules/jest-runtime"
      ]
    }
  },

然后安装babel-plugin-transform-export-extensions

答案 2 :(得分:1)

看起来你没有jsx的支持。我看到你安装了babel-jest但你在根文件夹中有.babelrc个文件

{
  "presets": ["es2015", "react"]
}