似乎每个人和他们的母亲都有不同的问题。从我试过的所有SO问题和GH的罚单上看,都没有什么效果。
实际上应该很简单,因为我的项目几乎是一个新的barebone项目。但我还是不知道我的生活出了什么问题。
当我运行jest时
/Desktop/Dropbox/Programming/iphone-app/fe/App.spec.tsx:11
const tree = react_test_renderer_1.default.create(<App_1.default />).toJSON();
^
SyntaxError: Unexpected token <我的配置文件:
// jest.config.js
module.exports = {
preset: 'ts-jest',
testEnvironment: 'node',
};-
// tsconfig.json
{
"compilerOptions": {
"allowJs": false,
"allowSyntheticDefaultImports": true,
"noFallthroughCasesInSwitch": true,
"experimentalDecorators": true,
"esModuleInterop": true,
"isolatedModules": true,
"jsx": "react-native",
"lib": [
"es6"
],
"moduleResolution": "node",
"noEmit": true,
"strict": true,
"target": "esnext"
},
"exclude": [
"node_modules"
]
}-
// babel.config.js
module.exports = function (api) {
api.cache(true);
return {
presets: ['babel-preset-expo'],
};
};编辑#1
为了明确起见,我尝试在jest配置文件中使用react-native预置,但没有成功(同样的错误):
// jest.config.js
module.exports = {
preset: 'react-native',
transform: {
'^.+\\.js$': '<rootDir>/node_modules/react-native/jest/preprocessor.js',
'^.+\\.tsx?$': 'ts-jest'
},
globals: {
'ts-jest': {
tsConfig: 'tsconfig.json'
}
},
testEnvironment: 'node',
};发布于 2019-06-15 11:23:28
它适用于此配置文件:
const { defaults } = require('jest-config');
module.exports = {
preset: 'react-native',
transform: {
'^.+\\.js$': '<rootDir>/node_modules/react-native/jest/preprocessor.js',
'^.+\\.tsx?$': 'ts-jest'
},
moduleFileExtensions: [
'tsx',
...defaults.moduleFileExtensions
],
};我需要补充一下
...
moduleFileExtensions: [
'tsx',
...defaults.moduleFileExtensions
],
...否则,我测试中的import App from './App';将解析为其他文件。通过添加tsx作为moduleFileExtensions选项中的最高优先级,应用程序将解析正确的文件。
另外,需要将tsconfig.json中的tsconfig.json编译器选项设置为"jsx": "react"。我不知道为什么我还不能将它设置为react-native,但目前看来一切都正常。
编辑
在较新版本的'^.+\\.js$': '<rootDir>/node_modules/react-native/jest/preprocessor.js'中不需要react-native。Keeping it may also cause a problem.
发布于 2019-06-14 11:48:14
我认为,问题的开始和结束。您能试着按以下方式编辑您的代码吗?
import 'react-native'
import renderer from 'react-test-renderer'
import { App } from './app'
import React from 'react'
test('renders correctly', () => {
const tree = renderer.create(
<App />
)
expect(tree).toBeDefined()
})https://stackoverflow.com/questions/56313474
复制相似问题