javascript - Testem gulp 任务完成后挂起

标签 javascript node.js tdd gulp testem

这个gulp任务完成后没有退出,我必须手动按 Ctrl-C 退出。

gulp.task('test', function(done) {
    var testem = require('testem');

    var testemOptions = {
        file: 'testem.json'
    };

    var t = new testem();

    t.startCI(testemOptions, done);
});

如何让这个任务正常退出?

注意:实际上它会自行退出,但完成后大约需要 15 秒。

输出:

[15:49:59] Using gulpfile ~/gulpfile.js
[15:49:59] Starting 'test'...
ok 1 PhantomJS 1.9 - Integration Tests: Home Index Page

1..3
# tests 3
# pass  3
# fail  0

# ok
[15:50:00] Finished 'test' after 1.33 s

最佳答案

设法使用Chromium启动器重现您的问题,但它应该与PhantomJS相同。在任务结束和进程实际退出之间确实存在15秒CPU延迟。

> time gulp testem
Starting 'testem'...
ok 1 Chrome 32.0 - sass: link
ok 2 Chrome 32.0 - Unit - HomeRoute: exists
ok 3 Chrome 32.0 - Unit - HomeRoute: #model
ok 4 Chrome 32.0 - Unit - HomeRoute: redirect

1..4
# tests 4
# pass  4
# fail  0

# ok
Finished 'testem' after 938 ms
gulp testem  1.27s user 0.25s system 9% cpu 16.581 total

通过删除您在任务上设置的 done 回调 并将其传递给不将此作为参数的 startCI

var testem = require('testem');

gulp.task('test', function () {

  var testemOptions = {
    file: 'testem.json'
  };

  var t = new testem();
  return t.startCI(testemOptions);

});

任务按预期运行并在完成后正确退出:

> time gulp testem
Starting 'testem'...
ok 1 Chrome 32.0 - sass: link
ok 2 Chrome 32.0 - Unit - HomeRoute: exists
ok 3 Chrome 32.0 - Unit - HomeRoute: #model
ok 4 Chrome 32.0 - Unit - HomeRoute: redirect

1..4
# tests 4
# pass  4
# fail  0

# ok
gulp testem  1.26s user 0.19s system 91% cpu 1.582 total

顺便说一句,不知道你可以做到这一点,只需将带有 file 属性的对象传递给 startCI,我认为你应该使用读取配置文件fs.readFile 并将其数据解析为 JSON,以使用您在 testem.json 中提供的配置参数启动 testem .

还有一件事,有一个 gulp 插件, gulp-testem 我没有机会尝试,但这可能会有所帮助。

关于javascript - Testem gulp 任务完成后挂起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25019955/

相关文章:

javascript - 无需 jQuery 即可链接具有父/子关系的复选框

javascript - 我在 nuxt.js 中找不到 process.server

node.js - 如何将在 zeit 中运行的 node.js 与 postgresql 连接起来?

javascript - Nodejs 服务上从 XML 到 JSON

asp.net - 如何为系统编写开发人员测试(单元测试、集成测试等)?

javascript - IE8 中 jQuery undefined variable

javascript - 如何成功 'grunt build' 一个 yeoman 项目

c++ - 应该如何编写 binding.gyp 以使用 OpenNI 构建 Node.js 插件?

unit-testing - 我应该为每个断言创建一个新的测试方法吗?

unit-testing - rust 中的单元测试、模拟和特征