4

저는 karma, webpack 및 jasmine을 사용하여 코드 범위에 istanbul 및 isparta를 사용하여 ES6 코드를 테스트했습니다. 내 테스트는 모두 통과 한 것처럼 보이지만 jquery 및 jquery-resizable-dom을 가져와야하므로 적용 범위가 실제로 낮습니다. 테스트되지 않은 코드로 커버리지에 포함됩니다.isparta를 사용하여 karma의 코드 적용 범위에서 jquery와 같은 타사 가져 오기를 제외하려면 어떻게해야합니까?

나는 바닐라 JS 코드 (~ 200 선)을 많이 가지고 있지만, 다음이 같은 추가 :

import $ from 'jquery'; 
require('imports?jQuery=jquery!jquery-resizable-dom'); 

const makeImagesResizable =() => { 
    $('.img').resizable({ 
    handleSelector: '> .glyphicon-resize-full' 
    }); 
}; 

export { makeImagesResizable }; 

그리고 내 자스민 테스트

, 나는 그것을 테스트 makeImagesResizable을 수입합니다. 테스트를 실행할 때 jquery 코드가 포함되어 있기 때문에 27 %의 코드 커버리지를 얻습니다. 위의 전체 코드 블록 (jquery 가져 오기 및 jquery를 사용하는 모든 코드)을 제거하면 실제 적용 범위 (jquery 코드가 매우 짧음)에 더 가까운 94 %로 범프가 충돌합니다.

실제로 코드에서 얻은 숫자를 반영하기 위해 제 3 자 수입을 코드 적용 범위에서 제외시킬 수있는 방법이 있습니까?

const webpack = require('webpack'); 
const isparta = require('isparta'); 

module.exports = (config) => { 
    config.set({ 
    frameworks: ['jasmine'], 
    files: [ 
     './spec/*.spec.js', 
    ], 
    webpack: { 
     module: { 
     loaders: [ 
      { test: /\.js$/, loader: 'imports?define=>false!babel' }, 
     ], 
     }, 
    }, 
    webpackMiddleware: { 
     noInfo: true, 
    }, 
    preprocessors: { 
     './spec/*.spec.js': ['webpack', 'coverage'], 
    }, 
    reporters: ['progress', 'coverage'], 
    coverageReporter: { 
     instrumenters: { isparta }, 
     reporters: [ 
     { 
      type: 'html', 
      dir: 'coverage', 
     }, 
     ], 
    }, 
    browsers: ['Chrome'], 
    plugins: [ 
     'karma-webpack', 
     'karma-jasmine', 
     'karma-coverage', 
     'karma-chrome-launcher', 
    ], 
    }); 
}; 

가 난 단지 몇 가지 이유가 전혀 범위를 반환하지 않는 소스 파일을 포함하기 때문에 테스트 파일을 포함 :

여기에 또한 내 카르마 설정입니다.

답변