使用Jest测试ES6模块

时间:2018-04-04 17:09:30

标签: unit-testing ecmascript-6 jestjs es6-modules

如何使用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);
});

2 个答案:

答案 0 :(得分:8)

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

第1步:

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

{
  "env": {
    "test": {
      "plugins": ["transform-es2015-modules-commonjs"]
    }
  }
}

第2步:

安装es2015转换插件:

npm install --save-dev babel-plugin-transform-es2015-modules-commonjs

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

答案 1 :(得分:0)

上述解决方案不适用于我。我能够解决这个问题:

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

babel.config.js

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

我正在使用打字稿的地方。

Reference