reactjs - Jest setupTestFrameworkScriptFile 或 setupFiles ES6 语法

标签 reactjs ecmascript-6 jestjs

我是 Jest 新手。我在 CI 圈上遇到错误。我的 setup.js 文件具有 ES6 语法。由于每次运行测试时都会执行 setupTestFrameworkScriptFile 上的文件,我认为我可以使用 ES6 语法,但 babel-jest 不会转译它。常规测试(例如 react 组件的单元测试)会被转译。在本地环境中,安装文件被编译。

 SyntaxError: Unexpected token {

      at ScriptTransformer._transformAndBuildScript (node_modules/jest/node_modules/jest-cli/node_modules/jest-runtime/build/script_transformer.js:305:17)
      at Object.<anonymous> (test/setup.js:1:869)
      at next (native)

我的 Jest 配置文件如下所示。

{
  "verbose": true,
  "transform": {
    "^.+\\.(js|jsx)$": "babel-jest"
  },
  "transformIgnorePatterns": [
     "node_modules/(?!my-module)"
  ],
  "snapshotSerializers": [
    "jest-serializer-enzyme"
  ],
  "setupTestFrameworkScriptFile": "<rootDir>/test/setup.js",
  "globals": {
    "__PROD__": false,
    "__STG__": false
  },
  "moduleDirectories": [
    "node_modules"
  ],
  "testRegex": "(/__tests__/.*|__test__.js)$",
  "moduleFileExtensions": [
    "css",
    "jsx",
    "js",
    "scss",
    "svg"
  ],
  "moduleNameMapper": {
    "\\.(jpg|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga)$": "<rootDir>/test/fileMock.js",
    "^.+\\.(css|less|scss)$": "<rootDir>/test/styleMock.js"
  }
}

我是否错过任何设置?

最佳答案

Jest 不会通过转译步骤推送 setup.js 脚本。 Jest 将转译您的测试代码,然后在不转译的情况下运行您的设置脚本,然后运行您的测试代码。只要用 ES5 语法编写就可以了。

关于reactjs - Jest setupTestFrameworkScriptFile 或 setupFiles ES6 语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46859048/

相关文章:

react-native - react 原生静态图像的 Jest 快照抛出警告

reactjs - Jest/ enzyme : Error: Uncaught [TypeError: Cannot read property 'query' of undefined] on component wrapped in withRouter

javascript - 如何在单独的文件中为 jest.each 定义测试装置?

javascript - 我们可以将 race 与 takeEvery 一起使用吗?

reactjs - 无限日历删除选择处理程序

javascript - 错误 : Shuffle needs to be initialized with an element

javascript - 如何将 Javascript 映射转换为对象?

ecmascript-6 - 将 JS 对象作为范围传递给 JS 模板文字?

html - 设计亚马逊附属链接

node.js - 您应该将流程类型文件夹发布到 NPM 吗?