使用 Mocha 测试 ES 2015 模块
Testing ES 2015 modules with Mocha
我刚刚在工作中分配了一个使用原始本机的项目 imports/exports(仅支持最新的浏览器),其中很大一部分是由一些顾问编写的(我不能解雇他们或更改project/toolchain 的大块)。我更喜欢 运行 我的测试尽可能在 node.js 中进行(必要时使用 jsdom),并且通常每分钟多次(即它们需要快速)。我 强烈 不想每隔几秒就用 alt-tab 切换到浏览器来查看结果。
因为顾问的一些技术选择违背了我们的意愿(长话短说),我不得不使用mocha和chai进行测试(我习惯了Jasmine和Jest),他们没有tests/testing 工作流程设置(同样,我无法解雇他们,我无法控制)。
在搜索时我找到了 个问题及其答案。许多建议已被弃用,或者适用于旧版本,例如通天塔
我终于达到了安装 @babel/core、@babel/register 和 @/babel/preset-env 并准备就绪的地步。
所以我
mocha --require @babel/register path/to/test.js
通过在 .babelrc 中进行适当的预设,我得到
regeneratorRuntime is not defined
它显然是在尝试 polyfill async/await,即使节点支持它。
我不需要转换现代语法的各个方面,我只需要将 import/export 语句更改为 module.exports 并要求。我真的不想有额外的开销 transforms/polyfills,我只是想在这里 运行 做一些测试。我添加 @babel/polyfill 只是为了让它工作,但我可以将它设置为仅转换 import/export 语句吗?
您可以add targets
to @babel/preset-env
让它知道目标环境。
在这种情况下,您需要定位 Node.js 的当前版本:
presets: [
[
'@babel/preset-env',
{
targets: {
node: 'current',
},
},
],
...
]
我刚刚在工作中分配了一个使用原始本机的项目 imports/exports(仅支持最新的浏览器),其中很大一部分是由一些顾问编写的(我不能解雇他们或更改project/toolchain 的大块)。我更喜欢 运行 我的测试尽可能在 node.js 中进行(必要时使用 jsdom),并且通常每分钟多次(即它们需要快速)。我 强烈 不想每隔几秒就用 alt-tab 切换到浏览器来查看结果。
因为顾问的一些技术选择违背了我们的意愿(长话短说),我不得不使用mocha和chai进行测试(我习惯了Jasmine和Jest),他们没有tests/testing 工作流程设置(同样,我无法解雇他们,我无法控制)。
在搜索时我找到了
我终于达到了安装 @babel/core、@babel/register 和 @/babel/preset-env 并准备就绪的地步。
所以我
mocha --require @babel/register path/to/test.js
通过在 .babelrc 中进行适当的预设,我得到
regeneratorRuntime is not defined
它显然是在尝试 polyfill async/await,即使节点支持它。
我不需要转换现代语法的各个方面,我只需要将 import/export 语句更改为 module.exports 并要求。我真的不想有额外的开销 transforms/polyfills,我只是想在这里 运行 做一些测试。我添加 @babel/polyfill 只是为了让它工作,但我可以将它设置为仅转换 import/export 语句吗?
您可以add targets
to @babel/preset-env
让它知道目标环境。
在这种情况下,您需要定位 Node.js 的当前版本:
presets: [
[
'@babel/preset-env',
{
targets: {
node: 'current',
},
},
],
...
]