【问题标题】:Test ES6 modules with Jest [duplicate]用 Jest 测试 ES6 模块
【发布时间】:2018-09-14 08:26:48
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

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


    第 1 步:

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

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

    第 2 步:

    安装 es2015 转换插件:

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

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

    【讨论】:

    • 这个答案可能已经过时了,GarouDan的答案是officially suggested solution
    • GarouDan 的答案不是官方建议的 ES6 模块解决方案,而是针对 Typescript 场景。它们不是一回事。
    • 虽然 GarouDan 的解决方案包括 typescript 支持,但在我提供的链接之后显示了没有 typescript 的有据可查的 Jest ES6 实现,GarouDan 的解决方案就是从中派生的。支持打字稿所需的更改可以忽略不计,但我同意这与问题无关。
    【解决方案2】:

    上面的解决方案对我不起作用。我能够解决这个问题:

    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'
        ],
    };
    

    我在哪里使用 typescript

    Reference.

    【讨论】:

      猜你喜欢
      • 2019-05-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-27
      • 2021-12-06
      • 2017-09-08
      相关资源
      最近更新 更多