Javascript 将Babel从6个升级到7个中断测试存根
我正在将Babel从6.26.0升级到7.8.3,我的一些测试现在正在中断。新版本似乎正在阻止导出的函数在升级后被Sinon打断 是否有一个配置设置或插件,我需要作为升级的一部分使用,以获得旧的行为 以下是一个正在中断的测试示例:Javascript 将Babel从6个升级到7个中断测试存根,javascript,babeljs,Javascript,Babeljs,我正在将Babel从6.26.0升级到7.8.3,我的一些测试现在正在中断。新版本似乎正在阻止导出的函数在升级后被Sinon打断 是否有一个配置设置或插件,我需要作为升级的一部分使用,以获得旧的行为 以下是一个正在中断的测试示例: it('a calls b', function () { bStub = sinon.stub(B, 'default'); a.do(); expect(bStub.calledOnce).to.be.true; // this used to be
it('a calls b', function () {
bStub = sinon.stub(B, 'default');
a.do();
expect(bStub.calledOnce).to.be.true; // this used to be true but no is now false
});
这些函数基本上很简单,但我添加了一些日志代码,在使用旧版本的Babel时,B似乎按照预期进行了存根,但它不再成功地进行存根,实际的B函数被调用
正在测试的实际功能:
A.js
以及正在删除的函数调用:
B.js
作为升级的一部分,我做了一些配置更改:
project.json
"devDependencies": {
+ "@babel/cli": "^7.8.3",
+ "@babel/core": "^7.8.3",
+ "@babel/preset-env": "^7.8.3",
- "babel-cli": "^6.5.1",
- "babel-core": "^6.26.0",
- "babel-loader": "^7.1.2",
- "babel-preset-es2015": "^6.5.0",
+ "babel-loader": "^8.0.6",
...
}
B.法律改革委员会
{
- "presets": ["es2015"]
+ "presets": ["@babel/preset-env"]
}
webpack.config.json
module: {
rules: [
{
test: /\.js$/,
exclude: /node_modules|scripts|dist|build\//,
use: {
loader: 'babel-loader',
options: {
- presets: ['es2015']
+ presets: ['@babel/preset-env']
}
}
}
]
}
谢谢 有什么更新吗?这里的情况也完全一样。有人能解释一下吗 除此之外,我还必须做以下工作: 安装再生器和堆芯-js@3. 如 对于该问题,未定义regeneratorRuntime 我尝试过这两种方法- 您可以直接导入core js或使用@babel/preset env的useBuiltIns选项 支持直接将核心js/stable包含到polyfill ECMAScript功能和再生器运行时/运行时 已经提到 最后,似乎没有认识到sinon存根行为- TypeError:_common_uuuWebpack_uImported_uModule_u1_uuu.functionName.withArgs 这不是一个函数
调试时,测试中未捕获存根行为。通过向babel加载程序添加额外的模块配置设置,我可以再次执行此操作。我的考试现在如期通过了 我能够使用umd和commonjs值通过测试,但我最终选择了commonjs,因为就我所知,它与上一版本的默认值最为兼容 webpack.config.js
{
...
use: {
loader: 'babel-loader',
options: {
presets: [["@babel/preset-env", { "modules": "commonjs" }]]
}
}
...
};
答案是我找到的解决方案,我希望它对你也有效。上面的答案完美无瑕!此外,除了测试/覆盖{loader:babel loader,options:{presets:[@babel/preset env,{useBuiltIns:usage,corejs:{version:3,propositions:false}之外,在正常构建中使用了以下网页包配置,模块:umd}]}
module: {
rules: [
{
test: /\.js$/,
exclude: /node_modules|scripts|dist|build\//,
use: {
loader: 'babel-loader',
options: {
- presets: ['es2015']
+ presets: ['@babel/preset-env']
}
}
}
]
}
{
...
use: {
loader: 'babel-loader',
options: {
presets: [["@babel/preset-env", { "modules": "commonjs" }]]
}
}
...
};