【问题标题】:Correct configuration with Gulp, Mocha, Browserify to execute client side test with server side tests使用 Gulp、Mocha、Browserify 正确配置以通过服务器端测试执行客户端测试
【发布时间】:2014-03-06 19:56:17
【问题描述】:

我正在开发一个节点应用程序,将gulp 用于我们的构建过程,并将gulp-mocha 插件用于我们的测试运行程序。

 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 将其合并到这个 gulp 过程中。

有人尝试过这样的设置,或者有任何想法我在这里缺少什么让我的 gulp“测试”任务执行我的客户端 mocha 测试以及我的服务器端?

【问题讨论】:

  • 您是否考虑过使用 karma(以前称为 testacular)进行客户端测试?它还有一个随附的插件,gulp-karma,可用。
  • @scarlz - 请详细说明 Karma 在这种情况下会以何种方式提供帮助。具体来说,它将如何帮助测试大量使用第三方全局变量(如 jQuery 或 lodash)的组件。

标签: node.js testing mocha.js browserify gulp


【解决方案1】:

可能的设置是:

  • Test runner - 这是 gulp 和 karma 之间的粘合剂,并提供了使用 gulp.src() 流设置 karma options.files 的选项。坦率地说,如果您在 karma 测试之前没有任何步骤,请直接在 gulp 任务中使用 karma,无需 gulp 插件。
  • 使用关联的 karma 插件,在 phantom/chrome/firefox 上运行
  • 使用关联的 karma 插件进行覆盖、alt-js 编译
  • 更多插件和配置业力选项以报告测试和覆盖率。

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

  • 由于它需要解析需求,它必须在所有“入口点”文件上运行。通常,您的测试应该需要来源,并且必须是入口点。
  • 使用karma-bro - 它解决了 karma-browserify 中的问题(ATM 这个doesnt even work - 它不能与 bfy 5.0 api 一起使用)和 karma-browserifast。
  • 覆盖变得棘手,因为源/供应商源/测试都捆绑在一起。所以我创建了一个custom coverage transform, that marks which code whould be instrumented while bfy is bundling
  • browserify 应该是 karma 中的“预处理器”。
  • 应该在 browserfy 选项中配置一堆“transform: []”
  • 可以通过采用现有的转换模块并使用自定义模块包装来配置转换,就像我在上面为 browserify-istanbul 所做的那样

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-21
    • 2013-09-14
    • 2020-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多