1

我正在使用 karma-coverage 来衡量我项目中的单元测试覆盖率,并且在这方面一切正常。我使用 HTML 报告器进入默认目录。

但是,我需要使用 grunt-git-describe 提供的构建版本信息“标记”覆盖率报告,该信息当前用于加载生成的 version.json 文件的 AngularJS 应用程序页脚。在 karma-coverage 的 html 报告中,我没有找到任何直接使用此 version.json 文件的方法。因此,如果有人知道如何做到这一点,我将不胜感激。

提前致谢!

4

1 回答 1

0

我确实设法通过某种解决方法来实现这一点。在运行 karma 之后,我在 grunt 中使用文本替换模块来执行此操作。如果有人有更好的解决方案,请分享,因为这有点 hack,但它工作正常。当我的环境中的 karma-coverage 的 html 报告进入项目的根 /coverage/ 文件夹时,我在每个 .html 文件中进行了递归文本替换,以查找默认页脚并在那里添加我的版本信息......

一、安装 grunt-text-replace

$ npm install grunt-text-replace --save-dev

然后我在 gruntfile.js 中做了以下替换函数:

grunt.initConfig({
    replace: {
        coverage: {
            src: ['coverage/**/*.html'],
            overwrite: true,
            replacements: [
            {
                from: '<div class="meta">Generated by',
                to: function(){return grunt.config.get('task.replace.versionString');}
            }
            ]
        }
    },
// and your other stuff in initConfig()

为此,我在 grunt 中添加了一个新任务:

grunt.registerTask('coverage', 'Adds version info to coverage results', function(){
    grunt.task.requires('version'); // The 'version' task creates a 'version.json' file
    var vers = grunt.file.readJSON('version.json');
    // Set the desired string to be used in text-replace -function
    grunt.config.set('task.replace.versionString', '<div class="meta">Version ' + vers.version + ', Tag "' + vers.revision[0] + '"<br>Generated by');
    grunt.task.run(['replace']);
});

有点难看,但就像一个魅力;-)

于 2014-12-18T06:50:43.473 回答