2017-06-09 27 views
14

我使用istanbul-instrumenter-loader嘗試爲未轉換的es6代碼生成代碼覆蓋率報告,並且一切正常運行時,生成的HTML輸出中報告的問題不會「 t似乎與實際來源相符。istanbul-instrumenter-loader:覆蓋問題與源不匹配

例如:

Incorrect coverage output

(在情況下的圖像被移除)const聲明有3「if語句未覆蓋」後,即使不存在這樣的陳述或任何代碼在那行之後。有時候,「不是蓋的聲明」標誌着一個字符串的中間,或者在對象的聲明,或跨多個語句,等等等等

這是我噶配置文件:

module.exports = function(config) { 
    config.set({ 
     basePath: '../../', 
     frameworks: [ 'qunit' ], 

     files: [ 
      'test/index.js', 

      // Session tickets 
      { pattern: 'test/tickets/*.json', watched: true, included: false, served: true } 

     ], 

     preprocessors: { 
      'test/index.js': 'webpack' 
     }, 
     webpack: { 
      module: { 
       rules: [{ 
        test: /\.js$/, 
        exclude: /node_modules/, 
        loaders: ['istanbul-instrumenter-loader', 'babel-loader'] 
       }, 
       { 
        test: /\.vue$/, 
        loaders: ['vue-loader'] 
       }, 
       { 
        test: /\.png$/, 
        loaders: ['url-loader'] 
       }] 
      } 
     }, 
     reporters: [ 'coverage-istanbul', 'progress' ], 
     coverageIstanbulReporter: { 
      type: 'html', 
      dir: './coverage' 
      fixWebpackSourcePaths: true 
     }, 
     port: 9876, 
     colors: true, 
     logLevel: config.LOG_INFO, 
     autoWatch: true, 
     browsers: [ 'Chrome' ], 
     browserNoActivityTimeout: 30000, 
     singleRun: true, 
     concurrency: Infinity, 
     client: { 
      captureConsole: true 
     }, 
     browserConsoleLogOptions: { 
      terminal: true, 
      level: '' 
     } 
    }) 
}; 
+0

我面臨同樣的,我的所有代碼'else'不是蓋的,雖然沒有'else'覆蓋。你解決了嗎? –

+0

@HarryJoy仍然沒有 – tacospice

+0

你可以提供你的js文件樣本以及規格文件 – gusaindpk

回答

0

卡瑪 - 覆蓋範圍和卡瑪的WebPack似乎工作起來

"karma": "^0.12.28", 
"karma-coverage": "^0.2.7", 
"karma-sourcemap-loader": "^0.3.2", 
"karma-webpack": "^1.3.1", 
"webpack": "^1.4.14" 

正確配置,你可以得到更多的在這裏https://github.com/webpack-contrib/istanbul-instrumenter-loader

和u可以提供AAS足夠你的js文件/規格

+0

我不知道我的配置是否正確,這是問題的一部分。不過,我確實發佈了我的配置。 – tacospice

0

我有一個類似的問題,並通過在babel-loader之前運行istanbul-instrumenter-loader解決它。

你需要更換:

{ 
    test: /\.js$/, 
    exclude: /node_modules/, 
    loaders: ['istanbul-instrumenter-loader', 'babel-loader'] 
} 

有:

{ 
    test: /\.js$/, 
    exclude: /node_modules/, 
    use: [ 
     { 
      loader: 'babel-loader' 
     }, 
     { 
      loader: 'istanbul-instrumenter-loader', 
      options: { 
       esModules: true 
      } 
     } 
    ] 
}