9

私はカルマのカバレッジを数日間実行しようとしていましたが、今は空の空白のページを次のように見つけようとしています。 Karma coverage empty reportカルマのカバレッジは常に空になります

はここに私の設定です:次のように

var path = require('path'); 

var webpackConfig = require('./webpack.common'); 

module.exports = function (config) { 
    var _config = { 
    basePath: '', 
    frameworks: ['jasmine'], 
    files: [ 
     { pattern: './karma-shim.js', watched: false } 
    ], 
    exclude: [], 
    preprocessors: { 
     './karma-shim.js': ['webpack', 'sourcemap', 'coverage'] 
    }, 
    client: { 
     captureConsole: false 
    }, 
    webpack: webpackConfig, 

    webpackMiddleware: { 
     stats: 'errors-only' 
    }, 

    coverageReporter: { 
     dir: 'coverage/', 
     reporters: [{ 
     type: 'json', 
     dir: 'coverage', 
     subdir: 'json', 
     file: 'coverage-final.json' 
     }] 
    }, 

    remapIstanbulReporter: { 
     src: 'coverage/json/coverage-final.json', 
     reports: { 
     lcovonly: 'coverage/json/lcov.info', 
     html: 'coverage/html', 
     'text': null 
     }, 
     timeoutNotCreated: 1000, // default value 
     timeoutNoMoreFiles: 1000 // default value 
    }, 

    webpackServer: { 
     noInfo: true // please don't spam the console when running in karma! 
    }, 
    reporters: ["mocha", "coverage", "karma-remap-istanbul"], 
    port: 9876, 
    colors: true, 
    logLevel: config.LOG_ERROR, 
    autoWatch: false, 
    browsers: ['PhantomJS'], // you can also use Chrome 

    singleRun: true 
    }; 

    config.set(_config); 

}; 

そして、ここに私のカルマ-shim.jsファイルです

Error.stackTraceLimit = Infinity; 
require('es6-shim'); 
require('reflect-metadata'); 
require('ts-helpers'); 
require('zone.js/dist/zone'); 
require('zone.js/dist/long-stack-trace-zone'); 
require('zone.js/dist/jasmine-patch'); 
require('zone.js/dist/async-test'); 
require('zone.js/dist/fake-async-test'); 

var appContext = require.context('./app', true, /\.spec\.ts/); 
appContext.keys().forEach(appContext); 

var testing = require('@angular/core/testing'); 
var browser = require('@angular/platform-browser-dynamic/testing'); 

testing.setBaseTestProviders(browser.TEST_BROWSER_DYNAMIC_PLATFORM_PROVIDERS, browser.TEST_BROWSER_DYNAMIC_APPLICATION_PROVIDERS); 

フォルダ構造は次のとおりです。 folder structure

私は何すべてのアイデアは、ここに行方不明?大いに感謝します。

おかげ

+0

はあなたのソース(テストファイルは必要ありません)ファイルユナーを提供しようとしました"プリプロセッサ"?私はあなたがそれを見逃していると思います。 – TypeScripter

+0

どちら?どうぞあなたはどうですか? –

+0

karma.conf.jsに "preprocessors"というタグがあります。そこにはshimファイルしかありません。ソースコードのパスも提供する必要があります。カバレッジは常にソースコードに対して生成されます。それは 'app/**/*。js'のようなものを持っているはずです...シムファイルが必要だと思っていません..それを取り除き、ソースファイルだけを使ってみてください.. – TypeScripter

答えて

1

あなたのカルマの設定は、ソースへの参照が不足して明らかにです。

次のように設定を変更してください:

module.exports = function (config) { 
    var _config = { 
     [...] 
     preprocessors: { 
      // Remove coverage as preprocessor for your tests - 
      // Istambul (runs coverage behind the scene for karma) will 
      // instrumentate this 
      './karma-shim.js': ['webpack', 'sourcemap'], 
      // Add path to your source (.js or .ts - depands on your project) 
      './index.ts': [ 'coverage' ] 
     }, 
     [...] 
    }, 
    [...] 
} 

説明:カバレッジテストユニットテストに対するあなたのコード - あなたはカルマを得るためにあなたのコードのためのエントリポイントを提供する必要があり、カバレッジを分析します。

エクストラ - カルマ・カバレッジプラグインを追加する:

module.exports = function (config) { 
    var _config = { 
     [...] 
     plugins: [ 
      require('karma-coverage') 
     ], 
     [...] 
    }, 
    [...] 
} 

エクストラ - カルマ& typescriptですファイル:

module.exports = function (config) { 
    var _config = { 
     [...] 
     plugins: [ 
      require('@angular/cli/plugins/karma') 
     ], 
     [...] 
    }, 
    [...] 
    preprocessors: { 
     './src/test.ts': [ '@angular/cli' ], 
     './index.ts': [ 'coverage' ] 
    }, 
    [...] 
    mime: { 
     'text/x-typescript': [ 'ts', 'tsx' ] 
    }, 
    [...] 
} 
+0

'カバレッジ'プリプロセッサは "karma-coverage"プラグインを参照していますか? カルマカバレッジでTypeScriptファイルをどのように扱うのですか?それはJavaScriptファイルだけを扱うようです。 –

+0

@SaadBenbouzidあなたはkarma-coverageプラグインをインポートする必要があります - 私は上記の答えを更新しました。運命はそれをそこから取るでしょう。 typescriptについては、明らかにいくつかの余分なプリプロセッサを使う必要があります。 karma-tsc-preprocessor(私はこれをテストしていません!)、または角度のあるプロジェクトangular-cliで日常的に使用するものです。また、上記の答えに追加されました。これが助けてくれることを願っています;-) – Fill

関連する問題