我正在尝试使用酶来测试反应成分,但即使使用最基本的例子也无法启动。
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 | })
我在这里做错了什么?
谢谢,
阿玛尔
答案 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"]
}