javascript - 使用 gulp 并行运行多个 qunit 测试

标签 javascript gulp qunit

我正在开发一个包含多个定制 jQuery 插件的项目,每个插件都有自己的 QUnit 测试和自己的 html 固定装置,因此我的 gulp-qunit 任务如下所示:

gulp.task('qunit', () => {
    let path = './assets/test/components/**/*.html';
    return gulp.src(path)
        .pipe(qunit());
})

但是,通过这种方式,测试会按顺序运行,整个测试套件占用了我整个构建过程的 80% 以上,我最近将其从 grunt 迁移到 gulp,以便能够并行化某些任务。

有没有办法并行运行 QUnit 测试,因为它们彼此不依赖?

最佳答案

您需要为每个 .html 文件创建一个流。

这意味着您必须将 glob 解析为一组文件,将每个文件映射到其自己的流中,然后将所有流合并为一个流:

var gulp = require('gulp');
var qunit = require('gulp-qunit');
var glob = require('glob');
var merge = require('merge-stream');

gulp.task('qunit-parallel', () => {
    var files = glob.sync('./assets/test/components/**/*.html');
    return merge(files.map(function(file) {
      return gulp.src(file).pipe(qunit());
    }));
})

我用 100 个 .html 文件尝试过,它确实快得多:

[11:09:40] Finished 'qunit-sequential' after 22 s
[11:09:58] Finished 'qunit-parallel' after 2.92 s

关于javascript - 使用 gulp 并行运行多个 qunit 测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40738449/

相关文章:

javascript - MVC 从局部 View 调用函数不起作用

javascript:页面加载之前的时间

javascript - Angular Material 数据表导出,路由器链接的不同名称

reactjs - Mocha 不会识别 JSX

gulp - 如何让 gulp-replace-task 替换 html 文件中的文本?

javascript - Blanket.js 不适用于 qunit

javascript - 使用 QUnit 测试 Dojos JsonRest

javascript - 意外的 css 位置 :absolute behavior

javascript - 我如何构建一套 Qunit 测试,它们都有自己的 qunit 装置?

css - React 无法导入 CSS 文件,并抛出错误