从命令行/ NPM脚本文件改变运行因果报应

问题描述 投票:0回答:1

我有一个设置与因缘及摩卡和通过伊斯坦布尔报告的应用程序的单元测试。

翔升脚本:

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

我想要做的是有一个脚本开发,将观看试验和应用文件的变化,并根据需要重新运行测试期间运行。

我试着用--single-run更换--auto-watch

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

但这种重新连续运行 - 只要一个轮测试完成后,它开始了。

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.config.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]')
        }
      }
    ]
  }
};

有没有办法做我正在寻找?

javascript node.js karma-mocha npm-scripts
1个回答
0
投票

检出Karma configuration options

您可以改用--no-single-run --single-run的运行在观看方式测试。你应该能够--auto-watch太运行此。

© www.soinside.com 2019 - 2024. All rights reserved.