将Babel从6升级到7会破坏测试存根

问题描述 投票:0回答:1

我正在将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

A.do = function () {
  return B();
};

export default A;

和正在存根的函数调用:B.js

export default function B () {
  ...
};

我在升级过程中进行的一些配置更改:

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",
  ...
}

。babelrc

 {
-  "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']
         }
       }
     }
   ]
 }

谢谢!

我正在将Babel从6.26.0升级到7.8.3,现在我的一些测试正在中断。似乎新版本阻止了Sinon在升级后对导出的功能进行存根。是...

javascript babeljs
1个回答
0
投票
© www.soinside.com 2019 - 2024. All rights reserved.