2017-08-09 5 views
0

私はカルマ& mocha &がistanbulを通じて報告しているアプリのユニットテストを行っています。karmaをcommad line/npmスクリプトからファイルを変更しました

NPMスクリプト:

"test": "cross-env BABEL_ENV=test karma start tests/karma.conf.js --single-run", 

私が何をしたいのかは、必要に応じて変更して再実行したテストのテスト&アプリのファイルを見ます開発中に実行するスクリプトを持っています。

は私が--auto-watch--single-runを交換してみました:

"test:watch": "cross-env BABEL_ENV=test karma start tests/karma.conf.js --auto-watch", 

が、この再実行継続 - とすぐにテストの1ラウンドが終了しているとして、それは最初からやり直し。

karma.conf.js:

var webpackConfig = require('../build/webpack.conf.test'); 

module.exports = function (config) { 
    config.set({ 
    browsers: ['PhantomJS'], 
    frameworks: ['mocha', 'sinon-chai', 'phantomjs-shim'], 
    reporters: ['spec', 'coverage'], 
    files: ['./index.js'], 
    preprocessors: { 
     './index.js': ['webpack', 'sourcemap'], 
    }, 
    webpack: webpackConfig, 
    webpackMiddleware: { 
     noInfo: true 
    }, 
    coverageReporter: { 
     dir: './coverage', 
     reporters: [ 
     { type: 'lcov', subdir: '.' }, 
     { type: 'text' } 
     ] 
    } 
    }); 
}; 

webpack.conf.test.js

var path = require('path'); 
var webpack = require('webpack'); 
var vueLoaderConfig = require('./vue-loader.conf.js'); 
var eslintFormatter = require('eslint-friendly-formatter'); 
var HtmlWebpackPlugin = require('html-webpack-plugin'); 

function resolve(dir) { 
    return path.join(__dirname, '..', dir); 
} 

module.exports = { 
    devtool: '#inline-source-map', 
    output: { 
    path: path.resolve(__dirname, '../dist/js'), 
    filename: 'build.js', 
    publicPath: '/ntx/js/' 
    }, 
    resolve: { 
    extensions: ['.js', '.vue', '.json'], 
    alias: { 
     '@': resolve('src') 
    } 
    }, 
    resolveLoader: { 
    alias: { 
     'scss-loader': 'sass-loader' 
    } 
    }, 
    plugins: [ 
    new webpack.DefinePlugin({ 
     'process.env': { NODE_ENV: '"testing"' } 
    }) 
    ], 
    // use inline sourcemap for karma-sourcemap-loader 
    module: { 
    rules: [ 
     { test: /\.css$/, use: ['vue-style-loader', { loader: 'css-loader', options: { minimize: false, sourceMap: false } }] }, 
     { test: /\.postcss$/, use: ['vue-style-loader', { loader: 'css-loader', options: { minimize: false, sourceMap: false } }] }, 
     { test: /\.less$/, use: ['vue-style-loader', { loader: 'css-loader', options: { minimize: false, sourceMap: false } }, { loader: 'less-loader', options: { sourceMap: false } }] }, 
     { test: /\.sass$/, use: ['vue-style-loader', { loader: 'css-loader', options: { minimize: false, sourceMap: false } }, { loader: 'sass-loader', options: { sourceMap: false, indentedSyntax: true } }] }, 
     { test: /\.scss$/, use: ['vue-style-loader', { loader: 'css-loader', options: { minimize: false, sourceMap: false } }, { loader: 'scss-loader', options: { sourceMap: false } }] }, 
     { test: /\.stylus$/, use: ['vue-style-loader', { loader: 'css-loader', options: { minimize: false, sourceMap: false } }, { loader: 'stylus-loader', options: { sourceMap: false } }] }, 
     { test: /\.styl$/, use: ['vue-style-loader', { loader: 'css-loader', options: { minimize: false, sourceMap: false } }, { loader: 'stylus-loader', options: { sourceMap: false } }] }, 
     { test: /\.(js|vue)$/, 
     loader: 'eslint-loader', 
     enforce: 'pre', 
     include: [resolve('src'), resolve('test')], 
     options: { 
      formatter: eslintFormatter 
     } 
     }, { 
     test: /\.vue$/, 
     loader: 'vue-loader', 
     options: { 
      loaders: { 
      css: ['vue-style-loader', { loader: 'css-loader', options: { minimize: false, souremap: false } }], 
      postcss: ['vue-style-loader', { loader: 'css-loader', options: { minimize: false, souremap: false } }], 
      less: ['vue-style-loader', { loader: 'css-loader', options: { minimize: false, souremap: false } }, { loader: 'less-loader', options: { sourceMap: false } }], 
      sass: ['vue-style-loader', { loader: 'css-loader', options: { minimize: false, souremap: false } }, { loader: 'sass-loader', options: { sourceMap: false, indentedSyntax: true } }], 
      scss: ['vue-style-loader', { loader: 'css-loader', options: { minimize: false, souremap: false } }, { loader: 'scss-loader', options: { sourceMap: false } }], 
      stylus: ['vue-style-loader', { loader: 'css-loader', options: { minimize: false, souremap: false } }, { loader: 'stylus-loader', options: { sourceMap: false } }], 
      styl: ['vue-style-loader', { loader: 'css-loader', options: { minimize: false, souremap: false } }, { loader: 'stylus-loader', options: { sourceMap: false } }], 
      }, 
      transformToRequire: { 
      video: 'src', 
      source: 'src', 
      img: 'src', 
      image: 'xlink:href' 
      } 
     } 
     }, { 
     test: /\.js$/, 
     loader: 'babel-loader', 
     include: [resolve('src'), resolve('test')] 
     }, { 
     test: /\.(png|jpe?g|gif|svg)(\?.*)?$/, 
     loader: 'url-loader', 
     options: { 
      limit: 10000, 
      name: path.posix.join('./dist/img', 'img/[name].[hash:7].[ext]') 
     } 
     } 
    ] 
    } 
}; 

私が探しているものを行う方法はありますか?

答えて

0

チェックアウトKarma configuration options

" - single-run"ではなく "--no-single-run"を使用して、時計モードでテストを実行できます。これを "--auto-watch"でも実行できるはずです。

+0

これには、単に '--single-run'を省略した場合と同じ問題があります。ファイルの変更を待たずに、一回の実行が完了するとすぐにテストスイートを繰り返します。私はそれがファイルが変更されたときにのみ再実行したい。 – ebbishop

+0

カルマ構成ファイルを使用していますか? –

+0

はい - 私は周りに初めてそれを入れなかったとは思えません!追加されました。 – ebbishop

関連する問題