Javascript 将Babel从6个升级到7个中断测试存根

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

我正在将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 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" }]]
          }
        }
...
};