【发布时间】:2020-05-15 06:57:26
【问题描述】:
我正在将 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
});
这些函数大多很简单,但我添加了一些日志记录代码,看起来 B() 在使用旧版本的 Babel 时按预期进行存根,但它不再成功存根,而是调用了实际的 B() 函数。
实际测试功能: 一个.js
A.do = function () {
return B();
};
export default A;
还有被存根的函数调用: B.js
export default function B () {
...
};
我在升级过程中所做的一些配置更改:
项目.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']
}
}
}
]
}
谢谢!
【问题讨论】:
标签: javascript babeljs