我最近为自耕农生成器创建了很多测试,但我无法理解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 angular
,yo angular:common
,yo angular:controller
等相同,或者以某种方式模拟或修改实际生成器中对composeWith()
的调用?
在测试中运行withGenerators()
和从生成器本身调用composeWith()
之间有什么区别?
答案 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(票证暗示了一些手册)解决方法)