使用Jest测试ES6模块[duplicate]

ejk8hzay  于 11个月前  发布在  Jest
关注(0)|答案(2)|浏览(201)

此问题在此处已有答案

Does Jest support ES6 import/export?(13个回答)
一年前关闭。
如何使用Jest测试ES6模块
范例:

sum.js

const sum = function (a, b) {
  return a + b;
}

export default sum;

字符串

sum.test.js

import sum from './sum';

test('adds 1 + 2 to equal 3', () => {
  expect(sum(1, 2)).toBe(3);
});

vsikbqxv

vsikbqxv1#

[十二月2023更新]

现在您可以原生支持ES6和ESM(ECMAScript模块)

**步骤1:**防止Jest尝试将ESM代码转换为CommonJS,更新Jest配置(下面的package.json示例):

"jest": {
    "transform": {}
}

字符串

**第二步:**为了能够在没有外部Transformer(例如babel)的情况下解析ES模块,使用--experimental-vm-modules标志启动Node。这可以通过改变npm“test”脚本启动Jest的方式来完成(同样在package.json内部):

"scripts": {
    "test": "node --experimental-vm-modules node_modules/jest/bin/jest.js"
}


就是这样。:)
如果您只是为了测试而使用Transformer包,您甚至可以卸载它们。

[过时的答案,只是为了历史的目的]

唯一的要求是将test环境配置为Babel,并添加es2015 transform插件:

第一步:

将您的test环境添加到项目根目录下的.babelrc

{
  "env": {
    "test": {
      "plugins": ["@babel/plugin-transform-modules-commonjs"]
    }
  }
}

第二步:

安装es2015 transform插件:

npm install --save-dev @babel/plugin-transform-modules-commonjs

**就是这样。**Jest将自动启用从ES模块到CommonJS的编译,而无需通知package.jsonjest属性的其他选项。

pn9klfpd

pn9klfpd2#

上面的解决方案对我不起作用。我可以用下面的方法解决:

yarn add --dev babel-jest @babel/core @babel/preset-env @babel/preset-typescript

字符串

数据库配置js

module.exports = {
    presets: [
        [
            '@babel/preset-env',
            {
                targets: {
                    node: 'current',
                },
            },
        ],
        '@babel/preset-typescript'
    ],
};


我用的是typescript
参考

相关问题