2017-06-09 10 views
2

this guideに続いて、テスト設定にistanbul-instrumenterを追加して、残りのファイルを表示する「アンバンドル」カバレッジレポートを取得しました。ただし、同梱のテストファイルはまだbuild/に、示されている。ここでは組み込みファイルをwebpackのカバレッジから除外する方法

----------------------------|----------|----------|----------|----------|----------------| 
File      | % Stmts | % Branch | % Funcs | % Lines |Uncovered Lines | 
----------------------------|----------|----------|----------|----------|----------------| 
All files     | 70.78 | 36.36 | 69.23 | 60.95 |    | 
build      | 67.39 | 31.03 | 66.67 | 53.93 |    | 
    tests.js     | 67.39 | 31.03 | 66.67 | 53.93 |... 208,209,211 | 
src/routes/Home   |  100 |  75 |  100 |  100 |    | 
    index.js     |  100 |  75 |  100 |  100 |    11 | 
src/routes/Home/components |  100 |  75 |  100 |  100 |    | 
    HomeView.js    |  100 |  75 |  100 |  100 |    18 | 
----------------------------|----------|----------|----------|----------|----------------| 
✨ Done in 14.19s. 

は、これまでの私のテストの設定です。私はイスタンブール・インスツルメンタ・ローダー句でbuildを除くことは、それを行うだろうと思ったが、していないようです:私は、エントリポイントbuild/tests.jsは、カバレッジの計算に使用されていないことを確認するにはどうすればよい

var nodeExternals = require('webpack-node-externals'); 
var path = require('path'); 
const ExtractTextPlugin = require('extract-text-webpack-plugin'); 

var project = require('../project.config'); 
const inProject = path.resolve.bind(path, project.basePath); 
const inProjectSrc = (file) => inProject(project.srcDir, file); 
const __DEV__ = project.env === 'development'; 

const extractStyles = new ExtractTextPlugin({ 
    filename: 'styles/[name].[contenthash].css', 
    allChunks: true, 
    disable: __DEV__ 
}); 

module.exports = { 
    entry: { 
    main: ['./tests/test-bundler.js'] 
    }, 
    target: 'node', 
    output: { 
    path: path.resolve('./build', project.basePath), 
    filename: 'build/tests.js' 
    }, 
    externals: [nodeExternals()], 
    module: { 
    rules: [    
     { 
     test: /\.js?$/, 
       use: [ 
        { 
         loader: 'babel-loader', 
         options: { 
          cacheDirectory: true, 
          plugins: [ 
           'babel-plugin-transform-class-properties', 
           'babel-plugin-syntax-dynamic-import', 
           [ 
            'babel-plugin-transform-runtime', 
            { 
             helpers: true, 
             polyfill: false, // we polyfill needed features in src/normalize.js 
             regenerator: true 
            }, 
           ], 
           [ 
            'babel-plugin-transform-object-rest-spread', 
            { 
             useBuiltIns: true // we polyfill Object.assign in src/normalize.js 
            }, 
           ], 
          ], 
          presets: [ 
           'babel-preset-react', 
           ['babel-preset-env', { 
            targets: { 
             ie9: true, 
             uglify: true, 
             modules: false 
            } 
           }], 
          ] 
         } 
        } 
       ], 
     exclude: /node_modules/ 
     }, 
     { 
       test: /\.(sass|scss)$/, 
       use: [ 
      'css-loader?modules&importLoaders=1&localIdentName=[name]__[local]__[hash:base64:5]', 
      'sass-loader', 
       ] 
      }, 
      { 
       test: /\.(gif|png|jpe?g|svg)$/i, 
       loaders: [ 
        'file-loader', 
        { 
         loader: 'image-webpack-loader', 
         query: { 
          progressive: true, 
          optipng: { 
           optimizationLevel: 7 
          }, 
          gifsicle: { 
           interlaced: false 
          }, 
          pngquant: { 
           quality: '65-90', 
           speed: 4 
          } 
         } 
        } 
       ] 
      }, 
      { 
       // delays coverage til after tests are run, fixing transpiled source 
       // coverage error 
       enforce: 'post', 
       test: /\.js$/, 
       exclude: /(tests|node_modules|bower_components|build)\//, 
       loader: 'istanbul-instrumenter-loader' 
      } 
    ] 
    }, 
    resolve: { 
    extensions: ['.js', '.jsx'] 
    } 
}; 

答えて

0

あなたのexclude正規表現が期待どおりに動作していないと思われます。どの環境でプロジェクトを実行していますか?とにかく

あなただけのsrcフォルダのカバレッジ・スイートを実行するために、あなたはロジックを含めると一緒に行く/除外反転かもしれません(ノードのpathを必要とすることを忘れないでください):

{ 
    enforce: 'post', 
    test: /\.js$/, 
    include: path.resolve(__dirname, 'src'), 
    loader: 'istanbul-instrumenter-loader' 
} 
+0

'についての良い点ですプロパティを含む。しかし、結果は同じです。 (これはOSX上で実行されています)。 –

関連する問題