为啥在 Jest 测试中将 async() 转换为 async function()?

Posted

技术标签:

【中文标题】为啥在 Jest 测试中将 async() 转换为 async function()?【英文标题】:Why async () transform to async function () in Jest tests?为什么在 Jest 测试中将 async() 转换为 async function()? 【发布时间】:2017-10-22 21:17:44 【问题描述】:

我的笑话测试用例类似于:

test('should update state.focus', async () => 
  let component = getComponent()
  component.setState(focus: true)
  expect(component.state().focus).toEqual(true)
  component.instance().handleBlur()

  await expect(component.state().focus).toEqual(false)
)

这在本地开发环境中运行良好。但是它在竹子上失败了,出现以下错误:

test('should update state.focus', async function () 
                                  ^^^^^
SyntaxError: missing ) after argument list

  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)

我正在使用 jest - 20.0.3 和 babel-jest 20.0.3

【问题讨论】:

能不能把整个函数体加进去 我更新了上面的正文 我的意思是包含错误的函数 我已经更新了测试功能和构建错误以包含我所拥有的一切。 【参考方案1】:

我遇到了完全相同的问题。我可以通过安装babel-preset-es2017 包来解决它,然后在.babelrc 中使用它


  "presets": ["es2017"]

【讨论】:

这成功了!感谢您为我节省了这么多的挫败感!

以上是关于为啥在 Jest 测试中将 async() 转换为 async function()?的主要内容,如果未能解决你的问题,请参考以下文章

为啥 jest 不能为我正在测试的自定义 React 钩子提供 useTranslation 钩子?

如何在 React 中将 props 传递给 jest 测试

使用 Jest 运行测试时,为啥 Trix 编辑器不会安装在 Vue 组件中?

为啥 Jest --runInBand 会加快测试速度?

为啥 Jest 在测试“Colyseus”游戏时会出现这个错误?

为啥 jest 寻找不再存在的测试文件?