可以使用yeoman与测试助手一起使用的是什么?

时间:2016-07-06 16:30:22

标签: javascript testing yeoman yeoman-generator

我最近为自耕农生成器创建了很多测试,但我无法理解withGenerators() helper method的目的。

给出的例子:

var angular = new RunContext('../../app');
 angular.withGenerators([
   '../../common',
   '../../controller',
   '../../main',
   [helpers.createDummyGenerator(), 'testacular:app']
 ]);

功能本身:

RunContext.prototype.withGenerators = function (dependencies) {
  assert(_.isArray(dependencies), 'dependencies should be an array');
  this.dependencies = this.dependencies.concat(dependencies);
  return this;
};

我看到该函数向Run Context对象添加了一个依赖项数组,数组中的每个项都是依赖生成器的路径。

这些路径用于什么?

何时以及为何需要使用此方法?

在给出的示例中,调用angular.withGenerators([...])与从命令行调用yo angularyo angular:commonyo angular:controller等相同,或者以某种方式模拟或修改实际生成器中对composeWith()的调用?

在测试中运行withGenerators()和从生成器本身调用composeWith()之间有什么区别?

1 个答案:

答案 0 :(得分:0)

这用于composeWith()(或旧版invoke()hookFor()方法)。

您可以在此处查看相关代码:https://github.com/yeoman/yeoman-test/blob/master/lib/index.js#L173-L188

基本上在调用composeWith()时,它将使用您传递的虚拟生成器模拟而不是环境将解析的虚拟生成器。

目前一个棘手的部分是,如果你将local路径设置传递给composeWith,它将忽略存根 - 你可以看到这里填充的错误https://github.com/yeoman/generator/issues/704(票证暗示了一些手册)解决方法)