实习生:一个工作区中多个项目的 DRY Runners

Intern: DRY Runners for multiple project in one workspace

虽然意识到我的项目设置可能是我的问题的根本原因,但我希望得到一些帮助(从另一个框架迁移到 Intern):

我在一个开发工作区中有不同的 (>20) 个项目,所以我有 (>20) 个带有测试代码的不同目录。我希望一个项目可以自行测试,但也希望一起执行所有套件。 我指定使用 RequireJS 作为 AMD 加载器,并且可以通过配置文件在每个项目(一个用于 nodeJS,一个用于浏览器)中找到我的测试。 PLUS 我有一个整体配置文件指定了 所有 个文件。

你可以想象有很多重复,什么是 DRY 的好方法?

注意:也欢迎帮助更好地描述我的问题(更通用或更少 TLDR)!

由于 Intern 配置文件只是 AMD 模块,您可以使用正常的依赖加载机制从多个文件加载和组合配置数据:

// in your “do everything” master configuration
define([
  'projectA/tests/intern',
  'projectB/tests/intern',
  'projectC/tests/intern',
  // …
], function () {
  var configs = Array.prototype.slice.call(arguments, 0);
  function getCombined(key) {
    return Array.prototype.concat.apply([], configs.map(function (config) {
      return config[key];
    }));
  }

  return {
    suites: getCombined('suites'),
    functionalSuites: getCombined('functionalSuites'),
    // …
  };
});