首页 > 解决方案 > 为什么 Jest 需要 Babel 来测试异步代码?

问题描述

开玩笑的“异步示例”指南从以下内容开始:

首先,在 Jest 中启用 Babel 支持...

但我想知道 Jest 为什么以及在哪里需要 Babel。

标签: jestjsbabeljs

解决方案


Node.jsasync自 7.6.0 版起默认支持函数,因此(正如您所怀疑的)Babel不需要使用函数运行Jest测试。async

我刚刚通过 Jest安装v24.6.0 确认了这一点,并使用 Node.js v10.15.1 运行了此测试:

test('hi', async () => {
  const val = await Promise.resolve('hello');
  expect(val).toBe('hello');
});

......它通过就好了。


另一方面,Babel 需要使用 ES6 模块语法。

“An Async Example”文档中的许多示例都使用 ES6 模块语法(export default ...import * as ...等),因此这些示例中的任何一个Babel 需要这些语法才能工作。


推荐阅读