javascript - 语法错误 : Unexpected token ( for jest

标签 javascript testing jestjs

在设置了一些 postcss 和 webpack 之后,我的一些 jest 测试失败了。都因同样的错误而失败。非常奇怪的错误,似乎 Jest 甚至不能识别箭头函数而不是 async/await

FAIL  tests/backend/integration/models/threadsModel.test.js
  ● Test suite failed to run

    /Users/albertgao/codes/node/projectTalk/tests/backend/integration/models/threadsModel.test.js:115
        test('Should return empty list when no data could be fetched', async () => {
                                                                             ^
    SyntaxError: Unexpected token (

      at ScriptTransformer._transformAndBuildScript (node_modules/jest-runtime/build/ScriptTransformer.js:289:17)
      at handle (node_modules/worker-farm/lib/child/index.js:41:8)
      at process.<anonymous> (node_modules/worker-farm/lib/child/index.js:47:3)
      at emitTwo (events.js:106:13)

测试简单,之前通过:

test('Should return empty list when no data could be fetched', async () => {
    const result = await ThreadModel.getThreads(threads[19], 5);
    expect(result).toHaveLength(0);
});

我试过:

  • --无缓存
  • 删除node_modules 并重新安装所有模块

仍然有这个错误。

这是我调用测试的方式:

"NODE_ENV=test ./node_modules/.bin/jest --no-cache --config=configs/jest.config.json",

这是我在 ./configs/ 文件夹中的 jest.config.js:

{
  "verbose": true,
  "rootDir": "../",
  "testPathIgnorePatterns": ["<rootDir>/node_modules/", "<rootDir>/tests/acceptance/", "<rootDir>/tests/coverageReport/", "<rootDir>/dist/"],
  "collectCoverage": false,
  "coverageDirectory": "tests/coverageReport",
  "collectCoverageFrom" : ["**/src/**"],
  "coveragePathIgnorePatterns": ["<rootDir>/node_modules/", "<rootDir>/configs/", "<rootDir>/src/config/appconfig.json", "<rootDir>/dist/"],
  "coverageReporters": ["text", "text-summary"]
}

这是我在 ./configs/ 文件夹中的 .babelrc:

{
  "presets": [["env",{"modules":false}], "react"],
  "plugins": ["react-hot-loader/babel"],
  "ignore": [
    "tests/",
    "dist/",
    "node_modules/",
    "src/backend/",
    "public"
  ]
}

我用的是最新的Jest

有什么解决办法吗?

最佳答案

因为异步箭头函数ES2017中被支持.所以你必须配置一个javascript转译器,例如:Babel .

 npm install --save-dev babel-jest regenerator-runtime babel-preset-stage-0

.babelrc

{
  "presets": ["es2015", "stage-0"]
}

您可以在 Additional Configuration 进一步查看 jest 配置.

关于javascript - 语法错误 : Unexpected token ( for jest,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44743754/

相关文章:

Javascript - 如何将事件监听器内的元素值与数组元素进行比较?

javascript - React Native 等待所有图像预取完成

json - 如何创建验证 JSON 响应的 rspec 测试?

python - 如何测试 POST 请求的 URL 参数?

javascript - 使用javascript获取两个字符串之间的日差

javascript - 使用 javascript 原型(prototype)系统创建共享结构的不可变对象(immutable对象)是否有意义

reactjs - Ant Design 和 React 测试库

mocha.js - Jest 中的未决测试?

javascript - 如何使用 Enzyme React Test .find 方法?

Angular + Jest : Can't resolve all parameters for AppComponent: (? )