首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在jest中使用ESM测试?

如何在jest中使用ESM测试?
EN

Stack Overflow用户
提问于 2021-08-27 16:22:22
回答 5查看 16.5K关注 0票数 39

我的设置

  • 节点v14.16.0
  • 我有一个测试文件,其中包含一个用ESM模块(import)编写的简单测试。
  • package.json中,我有一个脚本(下面是适应开玩笑的文件的脚本):"test": "set \"NODE_OPTIONS=--experimental-vm-modules\" && npx jest"
  • 我的测试运行w/ npm run test (上面的脚本)

我的目标:使用jest运行ESM测试。

My的尝试:

(1) CommonJS App / .js测试

  • package.json包含"type": "commonjs"
  • 名为test.js的测试文件
  • 错误:SyntaxError: Cannot use import statement outside a module (这是因为测试是作为一个公共文件运行的)。

(2) CommonJS App / .mjs测试

  • package.json包含"type": "commonjs"
  • 名为test.mjs的测试文件
  • 错误:No tests found (Jest没有找到文件?)

(3) ESM应用程序w/ .js或.mjs

  • package.json现在有"type": "module"
  • 名为test.mjstest.js的测试文件
  • 错误:ReferenceError: module is not defined at ...jest.config.js:6:1

(4) CommonJS应用程序与CommonJS测试

  • package.json包含"type": "commonjs"
  • 名为test.js的测试文件,但使用了通用的require语法(没有ESM模块,我想要包含);请注意,这不是我想要的,但是包含它只是为了表明测试本身没有什么问题。
  • 测试运行良好并通过。
EN

回答 5

Stack Overflow用户

发布于 2021-09-05 00:25:37

下面是我使用ESM运行Jest测试时所采取的步骤。测试中的源文件也是用ESM编写的。

  1. 将我的节点版本设置为14.16.0
  2. 安装Jest: npm嘲笑-D
  3. "type": "module"添加到package.json
  4. test中更新package.json脚本: “脚本”:{“测试”:“节点-实验-vm-模块./节点_模块/..bin/jest”}
  5. 创建一个具有以下内容的jest.config.js文件: 导出默认{ transform:{} }
  6. 至少有一个可以使用默认testMatch找到的测试(我的测试在__tests__ dir中)
  7. 运行测试: npm试验

魔术-注释-加载程序存储库中有一个关于GitHub的更完整的示例。

票数 30
EN

Stack Overflow用户

发布于 2021-12-06 07:33:14

经过大量的修改后,这是我成功的设置(重要的部分):

  • package.json
代码语言:javascript
运行
复制
  "type": "commonjs",
  "script": {
    "test": "NODE_OPTIONS=--experimental-vm-modules jest"
  }
  • jest.config.mjs (是,esModule)
代码语言:javascript
运行
复制
export default {
  moduleFileExtensions: [
    "mjs",
    // must include "js" to pass validation https://github.com/facebook/jest/issues/12116
    "js",
  ],
  testRegex: `test\.mjs$`,
};

必须包含"js"是一个具有历史意义的遗留物,它来自明显是.js文件的各个模块。按照https://github.com/facebook/jest/issues/12116进行更新。

票数 4
EN

Stack Overflow用户

发布于 2022-05-20 20:53:28

这是你需要的最低限度。道具@路克上面的评论与我需要的testMatch答案。

  1. package.json -确保"type": "module"在里面
  2. jest.config.js -将这个glob添加到testMatch数组中:"**/?(*.)+(spec|test).(m)js"
  3. 确保测试文件以.spec.mjs.test.mjs结尾,以与glob匹配。
  4. npm test脚本设置为node --experimental-vm-modules ./node_modules/.bin/jest

就这样。您的不需要-- jest配置中的转换设置为文件显示

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68956636

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档