所以我试着用Jest和TypeScript在我的React原生应用程序上编写测试.虽然使用旧的babel版本,但一切正常,但由于一些项目问题,我们不得不将babel升级到7.0.0.在那之后,我无法让它工作.任何帮助都将不胜感激

Jest encountered an unexpected token This usually means that you are trying to import a file which Jest cannot parse, e.g. it's not plain JavaScript. By default, if Jest sees a Babel config, it will use that to transform your files, ignoring "node_modules".

/home/levan/work/vabaco dhp frontend/packages/dhp mobile app/node_Module/react native calendar events/index.网间网操作系统.js:3

SyntaxError:意外的令牌导入

包裹json:

"dependencies": {
    "react": "16.4.1",
    "react-native": "0.56.0",
    "react-native-calendar-events": "^1.6.1",
    "react-redux": "^5.0.7",
    "react-router": "^4.3.1",
    "react-router-native": "^4.3.0",
    "react-router-redux": "5.0.0-alpha.9",
    "redux": "^4.0.0",
    "redux-api-middleware": "^2.3.0",
    "redux-form": "^7.4.2",
    "redux-thunk": "^2.3.0",
    "urijs": "^1.19.1"
  },
  "devDependencies": {
    "@babel/core": "^7.0.0",
    "@babel/preset-env": "^7.0.0",
    "@types/history": "^4.7.0",
    "@types/jest": "^23.3.1",
    "@types/react": "^16.4.13",
    "@types/react-native": "^0.56.17",
    "@types/react-router": "^4.0.30",
    "@types/react-router-native": "^4.2.3",
    "babel-core": "^7.0.0-bridge.0",
    "babel-jest": "^23.4.2",
    "babel-loader": "^8.0.2",
    "babel-preset-react-native": "^5.0.0",
    "jest": "^23.5.0",
    "react-native-typescript-transformer": "^1.2.10",
    "react-test-renderer": "^16.4.2",
    "ts-jest": "^23.1.4",
    "typescript": "^3.0.3"
},


"jest": {
    "preset": "react-native",
    "transform": {
      "^.+\\.ts?$": "ts-jest",
      "^.+\\.tsx?$": "ts-jest",
      "^.+\\.js$": "babel-jest"
    },
    "testRegex": "(/__tests__/.*|(\\.|/)(test|spec))\\.(jsx?|tsx?)?$",
    "moduleFileExtensions": [
      "ts",
      "tsx",
      "js",
      "jsx",
      "json",
      "node"
    ],
    "moduleNameMapper": {
      "^.+\\.(css|less|scss)$": "identity-obj-proxy"
    },
    "transformIgnorePatterns": [
      "/node_modules/(?!(react-native|my-project|react-native-button|react-native-calendar-events)/)"
    ]
  }

法律改革委员会:

{
  "presets": ["react-native", ["@babel/preset-env", {"modules": "commonjs"}]],
  "env": {
    "test": {
      "presets": ["react-native", ["@babel/preset-env"]]
    }
  }
}

推荐答案

找到了解决办法.在转换中,应该使用react native/jest/preprocessor.js而不是babeljest.

"jest": {
    "preset": "react-native",
    "moduleDirectories": [
      "node_modules",
      "src"
    ],
    "transform": {
      "^.+\\.ts?$": "ts-jest",
      "^.+\\.tsx?$": "ts-jest",
      "^.+\\.js$": "<rootDir>/node_modules/react-native/jest/preprocessor.js" <--- over here
    },
    "testRegex": "(/__tests__/.*|(\\.|/)(test|spec))\\.(jsx?|tsx?)?$",
    "moduleFileExtensions": [
      "ts",
      "tsx",
      "js",
      "jsx",
      "json",
      "node"
    ],
    "moduleNameMapper": {
      "^.+\\.(css|less|scss)$": "identity-obj-proxy"
    },
    "transformIgnorePatterns": []
}

React-native相关问答推荐

复活的夹子在Panguesture上崩溃

为什么将字符串写入文件然后将相同的文件作为字符串读取会导致不同的字符串?

打开屏幕后自动显示键盘

React.js - 为所有组件方法使用属性初始化器

变量 window在react-native 中代表什么?

react-native 中的layout-only view removal优化是什么?

如何实时从 react-native-camera 获取帧

react-native 中 android 和 iOS 的图像大小

如何在 React Native 中访问原生 UI 组件的实例方法

React Native:无法点击调试菜单

xcode 8.3 框架未找到架构 armv7 的 FileProvider

如何使用 Stripe (stripe.js) 和 react-native

使用 WSL2 运行时如何将手机连接到 expo

iOS 模拟器如何确认alert信息

React Native Image 不显示,我该如何解决?

居中图像 React Native 加载屏幕

Jest TransformIgnorePatterns 所有 node_modules 用于 React-Native Preset

Android Log

React Native:无法解析模块 fs

React Native 构建命令失败:PhaseScriptExecution ... (domain=NSPOSIXErrorDomain, code=2)