用 Jest 测试 ES6 模块
Posted
技术标签:
【中文标题】用 Jest 测试 ES6 模块【英文标题】:Test ES6 modules with Jest [duplicate] 【发布时间】:2018-09-14 08:26:48 【问题描述】:如何使。
例子:
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);
);
【问题讨论】:
【参考方案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.
【讨论】:
以上是关于用 Jest 测试 ES6 模块的主要内容,如果未能解决你的问题,请参考以下文章
无法在基于 jest 和 vue-test-utils 的测试项目中使用 vue.js 的 ES6 模块
使用 React、Typescript 和 ES6 进行 Jest 测试
Jest Manual Mocks with React 和 Typescript:模拟 ES6 类依赖
jest + typescript + es6 模块(又一次,2019 年)- SyntaxError: Unexpected token export