2014-03-06 19 views
4

我正在开发一个节点应用程序,利用gulp为我们的构建过程和gulp-mocha插件为我们的测试运行者。使用Gulp,Mocha,Browserify修正配置以执行服务器端测试的客户端测试

gulp.task('test', function() { 
    return gulp.src(TESTJS) 
     .pipe(mocha({reporter: 'spec'})) 
     .on("error", function (err) { 
      // handle the mocha errors so that they don't cloud the test results, 
      // or end the watch 
      console.log(err.toString()); 
      this.emit('end'); 
     }); 
}); 

目前TESTJS只是我的服务器端测试。我想要使​​用这个相同的过程来执行我的客户端测试。我看着gulp-blanket-mocha并给了它一个镜头,但我一直遇到同样的问题。当试图测试我的主干代码时,它会失败,因为测试运行器找不到其他客户端组件(即jquery),并且它失败。我知道我需要使用某种无头像webkit,如phantomJS。但是我很难找出如何将这一点与browserify合并在一起。

任何人试图得到像这样的安装程序或有任何想法,我在这里失去了我的吞咽“测试”任务执行我的客户端摩卡测试以及我的服务器端?

+1

您是否考虑过使用业力(以前称为testacular)进行客户端测试?它也有一个附带的插件,'gulp-karma',可用。 – scarlz

+0

@scarlz - 请详细说明Karma在这种情况下会有哪些帮助。具体来说,它将如何帮助测试大量使用第三方全局变量(如jQuery或lodash)的组件。 – vsync

回答

1

一个潜在的设置是:

  • Test runner - 这是咽和业力之间的粘合剂,并提供选项来设置因缘options.files与gulp.src()流。坦率地说,如果你在业力测试之前没有步骤,那么直接在吞噬任务中使用业力,而不使用吞噬插件。
  • 使用相关业力的插件,用于覆盖幻象/镀铬运行/火狐
  • 使用相关的业力的插件,ALT-JS编译
  • 更多插件&用于测试和覆盖报告人缘配置选项。

使用browserify会改变上面的整个设置。

  • 由于需要解决需求,它必须在所有“入口点”文件上运行。通常,您的测试应该要求来源,并且必须是入口点。
  • 使用karma-bro - 它解决了karma-browserify中的问题(ATM这doesnt even work - 它不能使用bfy 5.0 api)& karma-browserifast。
  • 由于所有源/供应商源/测试都捆绑在一起,所以覆盖变得棘手。所以我创建了一个0123vd
  • browserify应该是业务中的“预处理器”。
  • 一串“变换:[]”应在browserfy选项
  • 的变换可以通过取一个现有的变换模块和包裹与自定义模块如我上面那样对browserify-伊斯坦布尔
被配置来配置