我有一个ES6(Aurelia)应用,我正在使用karma
与webpack
和babel
进行单元测试。我能够为 test 文件生成源映射,但不能为应用程序文件生成源映射。我的karma.config
包含以下内容:
module.exports = function (config) {
config.set({
basePath: __dirname,
frameworks: ['jasmine'],
exclude: [],
files: [
{ pattern: 'spec-bundle.js', watched: false }
],
preprocessors: {
'spec-bundle.js': ['webpack', 'sourcemap']
},
webpack: require('../webpack.config.babel'),
webpackServer: { noInfo: true },
...
});
}
我的规范文件被提取到spec-bundle
,如下所示:
Error.stackTraceLimit = Infinity;
require('aurelia-bootstrapper-webpack');
var testContext = require.context('./unit', true, /\.spec\.(ts|js)$/);
function requireAll(requireContext) {
return requireContext.keys().map(requireContext);
}
var modules = requireAll(testContext);
我的测试的源映射已正确加载,但我无法获取要加载的应用程序文件的源映射。此外,我无法将测试文件的源地图加载到不,因此我甚至不确定是什么打开它们(从{{删除sourcemaps
引用1}}什么也没做。)
如何加载这些源地图?
答案 0 :(得分:1)
您必须更改文件webpack.config.ts,此行:
envDev(ENV !== 'test' ? {} : {devtool: 'inline-source-map'}) :
到
envDev(ENV === 'test' ? {} : {devtool: 'inline-source-map'}) :
答案 1 :(得分:1)
这是istanbul
中的错误,这就是我修复它的方法:
在npm
中更新了我的package.json
任务:
"test": "cross-env BABEL_ENV=node NODE_ENV=test ./node_modules/karma/bin/karma start test/karma.conf.js",
"test:debug": "npm test -- --single-run=false --debug"
为:
"test": "cross-env BABEL_ENV=node NODE_ENV=test ./node_modules/karma/bin/karma start test/karma.conf.js",
"test:debug": "set mode=debug&&npm test -- --single-run=false --debug"
然后,在我的webpack.config.babel
中,将其更改为:
...(ENV === 'production' || ENV === 'development'
? [commonChunksOptimize({ appChunkName: 'app', firstChunk: 'aurelia-bootstrap' })]
/* ENV === 'test' */
: [generateCoverage({ options: { 'force-sourcemap': true, esModules: true } })]
),
致:
...(ENV === 'production' || ENV === 'development'
? [commonChunksOptimize({ appChunkName: 'app', firstChunk: 'aurelia-bootstrap' })]
/* ENV === 'test' */
: process.env.mode === "debug" ? [] /* coverage breaks inline source maps */
: [generateCoverage({ options: { 'force-sourcemap': true, esModules: true } })]
),
generateCoverage
的最高位置import generateCoverage from '@easy-webpack/config-test-coverage-istanbul'
我没有对karma.config
或spec-bundle
修改强>
我将此项目升级到Webpack版本2,后者不再支持yargs
,因此我无法将debug
arg传递给它。为了解决方法,我在istanbul
级别关闭了karma
。在我的karma.conf.js
webpack: require('../webpack.config')({ coverage: !config.debug }),
和我更新的脚本:
karma start test/karma.conf.js --single-run=false --debug=true