我使用Karma Remap Coverage在我的应用程序中使用Karma设置了测试覆盖率,方法是对 karma.config.js 文件进行更改,如下所示:
module.exports = function (config) {
config.set({
basePath: '',
frameworks: ['jasmine', '@angular/cli'],
plugins: [
require('karma-jasmine'),
require('karma-coverage'),
require('karma-chrome-launcher'),
require('karma-remap-istanbul'),
require('@angular/cli/plugins/karma')
],
files: [{
pattern: './src/test.ts',
watched: false
}],
preprocessors: {
'./src/test.ts': ['@angular/cli']
},
mime: {
'text/x-typescript': ['ts', 'tsx']
},
remapIstanbulReporter: {
reports: {
html: 'coverage',
lcovonly: './coverage/coverage.lcov'
}
},
remapCoverageReporter: {
'text-summary': null,
html: './coverage/html',
cobertura: './coverage/cobertura.xml'
},
angularCli: {
config: './angular-cli.json',
environment: 'dev',
codeCoverage: true
},
coverageReporter: {
addNodeGlobals: true,
instrumenterOptions: {
istanbul: { noCompact: true }
},
reporters: [
{ type: 'json' },
],
html: './coverage',
dir: './coverage/',
subdir: (browser) => {
return browser.toLowerCase().split(/[ /-]/)[0]; // returns 'chrome'
},
},
reporters: config.angularCli && config.angularCli.codeCoverage ? ['progress', 'coverage', 'karma-remap-istanbul'] : ['progress'],
port: 9876,
colors: true,
logLevel: config.LOG_INFO,
autoWatch: true,
browsers: ['Chrome'],
singleRun: false
});
};
我运行命令: ng test - code-coverage 来运行测试套件并生成覆盖范围。成功运行测试后,我收到错误:
错误:找不到源地图:“path / to / module / file.ts”
我的应用程序中的地图文件不在“path / to / module /”中,而是由 ng build 命令生成的地图存储为 main.bundle.js .map 位于“./dist/”目录中。
那就是说,我正在获取一个描述正确文件结构的覆盖仪表板,但我无法查看相关文件(可能是因为它们无法从typescript转换为es5)。
如何配置 karma-remap-istanbul 以按照上述配置定位地图,以便我可以将覆盖详细信息作为整个应用程序的html获取。