1

我在gulp.watch 遇到了这个错误。本质上,当测试单元因错误而失败时,watch 命令会挂起——即只运行一次,然后 watch 不会再次触发事件。

规定的解决方法是使用gulp-plumber来防止错误退出。但是,这仅适用于流。如果我与 browserify 一起运行业力测试,我的配置看起来与此类似(我无法确定如何将流挂钩到这个坏男孩以启用管道工):

gulp.task('watch', function() {
  gulp.watch('src/**/*.js', ['test']);
  gulp.watch('test/**/*.spec.js', ['test']);
});

gulp.task('test', function () {
  return karma.server.start({
    files: [
      'test/**/*.spec.js'
    ],
    frameworks: ['browserify', 'jasmine'],
    preprocessors: {
      'test/**/*.spec.js': ['coverage', 'browserify']
    },
    browsers: ['PhantomJS'],
    reporters: ['coverage', 'spec', 'failed'],
    browserify: {
      debug: true,
      transform: ['browserify-istanbul']
    },
    singleRun: true
  });
});

有没有人有一个解决方法来运行带有手表的测试单元或关于我如何让它与 gulp-plumber 一起工作的建议?

4

1 回答 1

7

这里的解决方案是从图片中删除 gulp.watch 。由于 browserify 被用作预处理器,Karma 的内部监视可以神奇地工作,不需要 watchify 或 gulp.watch。

gulp.task('watch', function() {
  return karma.server.start({
    configFile: __dirname + '/karma.conf.js'
  });
});

gulp.task('test', function () {
  return karma.server.start({
    configFile: __dirname+'/karma.conf.js',
    singleRun: true
  });
});

还有我调整后的配置文件:

module.exports = function(config) {
  config.set({
    files: [
      'test/**/*.spec.js'
    ],
    frameworks: ['browserify', 'jasmine'],
    preprocessors: {
      'test/**/*.spec.js': ['coverage', 'browserify']
    },
    browsers: ['PhantomJS'],
    reporters: ['coverage', 'spec', 'failed'],
    browserify: {
      debug: true,
      transform: ['browserify-istanbul']
    }
  });
};
于 2014-09-22T17:54:32.923 回答