跳转到主要内容
版本:26.倍

ECMAScript模块

Jest附带实验支持ECMAScript模块(ESM)。

注意,由于Jest的实验性质,它的实现中有许多已知的和未知的bug和缺失的特性。你应该去看看跟踪问题标签在问题跟踪程序中获取最新状态。

还要注意,Jest用于实现ESM支持的api仍然存在考虑节点实验(版本14.13.1)。

除去这些警告,这就是在测试中激活ESM支持的方式。

  1. 确保禁用代码转换通过变换:{}或者配置你的转换器发出ESM而不是默认的CommonJS (CJS)。
  2. 执行节点——experimental-vm-modules,如。节点——experimental-vm-modules node_modules。bin /笑话NODE_OPTIONS =——experimental-vm-modules npx笑话等。在Windows上,可以使用cross-env能够设置环境变量。
  3. 除此之外,我们试图跟上节点的逻辑来激活“ESM模式”(例如查看类型package.json乔丹文件),看到他们的文档yabo2013获取详细信息。

ESM和CommonJS的区别#

大多数差异可以用节点的文档除了上面提到的内容外,Jest还将一个特殊的变量注入到所有执行的文件中—the开玩笑对象。要在ESM中访问此对象,需要从@jest /全局模块。

进口 { 开玩笑 } “@jest /全局” ;
开玩笑 useFakeTimers ( ) ;
/ /等。

请注意,我们目前不支持jest.mock在ESM中以一种干净的方式,但这是我们打算在未来添加适当的支持。遵循这个问题为更新。