2017-06-09 46 views
14

Używam istanbul-instrumenter-loader do próby wygenerowania raportów pokrycia kodu dla mojego nieskanowanego kodu es6, a gdy wszystko działa poprawnie, problemy zgłaszane w wygenerowanym wyjściu HTML nie są " t wydają się być zgodne z rzeczywistym źródłem.istanbul-instrumenter-loader: problemy z pokryciem nie pasują do źródła

Na przykład:

Incorrect coverage output

(w przypadku, gdy zdjęcie jest usuwane) Oświadczenie const ma 3 „if nieobjęte” po nim, chociaż nie ma takiego oświadczenia lub dowolny w ogóle po tym wierszu. Czasami „oświadczenie nieobjęte” jest zaznaczone w środku łańcucha, lub w deklaracji obiektu, lub w wielu wypowiedzi, itp itd

Oto mój Karma plik konfiguracyjny:

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

Jestem stoi podobny, wszystkie moje kody 'else' nieobjęte, podczas gdy nie ma' else' do pokrycia. Czy to rozwiązałeś? –

+0

@HarryJoy wciąż nic – tacospice

+0

Czy możesz podać próbkę dla pliku js, a także plik spec – gusaindpk

Odpowiedz

0

karma-zasięg i karma-WebPack wydają się działać razem

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

Czy poprawnie skonfigurowany, można uzyskać więcej tutaj https://github.com/webpack-contrib/istanbul-instrumenter-loader

i może u dostarczyć AAS wystarczająca dla twojego pliku js/spec

+0

Nie wiem, czy poprawnie skonfigurowałem, to część pytania. Zrobiłem jednak moją konfigurację. – tacospice

0

Miałem podobny problem i rozwiązałem go, uruchamiając istanbul-instrumenter-loader przed babel-loader.

trzeba by wymienić:

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

z:

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