1

プロジェクトの単体テストカバレッジを測定するためにカルマカバレッジを使用していますが、その点ではすべてうまく機能します。HTML レポーターをデフォルト ディレクトリに使用します。

ただし、結果の version.json ファイルをロードする AngularJS アプリのフッターで現在使用されている grunt-git-describe を使用して入手できるビルド バージョン情報をカバレッジ レポートに「スタンプ」する必要があります。Karma-coverage の html レポートで、この version.json ファイルを直接使用する方法は見つかりませんでした。誰かがそれを行う方法を知っているなら、私は大いに感謝します.

前もって感謝します!

4

1 に答える 1

0

ある種の回避策でこれを実装することができました。これを行うためにカルマを実行した後、grunt で text-replace モジュールを使用します。誰かがより良い解決策を持っている場合は、これは少しハックであるため共有してください。ただし、問題なく動作します。私の環境での 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 に答える