为什么 Jest 需要 Babel 来测试异步代码?

ato*_*edo 5 jestjs babeljs

Jest “一个异步示例”指南开始于:

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

但是我想知道 Jest 需要 Babel 的原因和用途。

Bri*_*ams 5

Node.js的支持了async,因为7.6.0版本的缺省功能,所以(如你怀疑)Babel不是需要Jest使用运行测试async功能。

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

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

......它通过了。


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

许多在实施例中“一个实施例异步” DOC使用ES6模块语法(export default ...import * as ...等),这样Babel 需要任何的这些实施例来工作。