使用gulp.watch和浏览器化的karma / jasmine单元测试会因错误而失败

时间:2014-09-19 21:05:58

标签: unit-testing karma-runner gulp browserify gulp-watch

我遇到了this error with gulp.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?

1 个答案:

答案 0 :(得分: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']
    }
  });
};