是否有任何 JavaScript 测试框架支持 ES 模块

Jus*_*tin 6 javascript testing es6-modules

是否有任何测试框架支持使用新 ES 模块语法的测试?我有一个 JS 应用程序,它大量使用.mjs带有 ES 模块的文件。我尝试了 Jest 和 Jasmine,当我尝试为我的应用程序编写运行测试时,它们都会抛出错误。我需要测试这个文件:

数学.mjs

export function add(a, b) {
  return a + b;
}
Run Code Online (Sandbox Code Playgroud)

Cap*_*iel 13

截至 2022 年 2 月,这是我所看到的:

  • Jest v.26 对测试原生 ES 模块的支持是*实验性的*并且相当不全面。可能足以测试 ESM 代码,但插件之类的东西仍然需要 .cjs 解决方法。v27 重点扩展 ESM 支持看起来是一个困难的目标。https://github.com/facebook/jest/milestone/12 (5认同)

lab*_*ing 7

其他支持 ES 模块的测试运行程序有:


Muk*_*hta 6

我尝试了Vitest,效果非常好。我的目标是用打字稿构建一个可发布的库。该库是使用Nx w 和"type": "module"in构建的 monorepo 的一部分,package.json以及 my 中的以下内容tsconfig.json


 "compilerOptions": {
    "module": "ESNext",
    "target": "ES6",
    "moduleResolution": "node"
}
Run Code Online (Sandbox Code Playgroud)

它使用 0 配置,并且我尝试测试使用来自 3rd 方包的 CJS 和 ESM 类型导入的函数。

顺便说一句,我真的很喜欢干净的语法。另外,vitest 还支持测试使用 React/Vue 构建的组件。


Ant*_*ris 2

您可以将该esm包与 Jasmine 一起使用。但不确定 Jest

数学规范.js

import { add } from './math.mjs';

describe('Add', () => {
  it('should add 3 and 2', () => {
    expect(add(3,2)).toBe(5);
  });
});
Run Code Online (Sandbox Code Playgroud)

安装并运行

$ yarn global add jasmine esm
$ jasmine --require=esm
Randomized with seed 44366
Started
.
1 spec, 0 failures
Finished in 0.004 seconds
Run Code Online (Sandbox Code Playgroud)