使用Jest测试ES6模块

Pau*_*ica 5 unit-testing ecmascript-6 jestjs es6-modules

如何使用Jest测试ES6模块.


例:

sum.js

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

export default sum;
Run Code Online (Sandbox Code Playgroud)

sum.test.js

import sum from './sum';

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

Pau*_*ica 12

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


步骤1:

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

{
  "env": {
    "test": {
      "plugins": ["@babel/plugin-transform-modules-commonjs"]
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

第2步:

安装es2015转换插件:

npm install --save-dev @babel/plugin-transform-modules-commonjs
Run Code Online (Sandbox Code Playgroud)

就是这样.Jest将自动从ES模块到CommonJS进行编译,而无需在内部通知您的jest属性的其他选项package.json.

  • 这个答案可能已经过时了,GarouDan的答案是[官方建议的解决方案](https://jestjs.io/docs/en/getting-started#using-babel) (2认同)