gpt4 book ai didi

node.js - 如何以编程方式调用 yeoman 生成器?

转载 作者:太空宇宙 更新时间:2023-11-03 23:07:33 24 4
gpt4 key购买 nike

我需要一些提示来编写脚本来回答 yeoman 生成器的提示。

这是背景。我使用 yeoman 的生成器-生成器创建了自己的生成器。我添加了一些提示。为了现在和将来的开发过程中测试模板项目,我需要生成一个示例项目并测试不断发展的模板。因为我希望 hudson 执行测试例程,所以我需要将其自动化(通过脚本回答这些提示)

出于我的需求,我未能在以下来源找到相关信息:

  1. http://yeoman.github.io/generator/
  2. https://github.com/yeoman/generator ,其中测试中有一些生成器调用代码,但我不知道如何使用 grunt 或 Node 脚本运行它。

以前有人这样做过吗?

--4 月 30 日更新--

我尝试将以下脚本作为“test/test-app.js”:

var path = require('path');
var helpers = require('yeoman-generator').test;

describe('viena', function(){
var options = { 'skip-install': true };
var prompts = { 'scriptAppName': 'Viena' , "appTitle": "Test"};

// Runs once:
before(function(done){
// This method creates temporary folder for test output
// and clears it afterwards.
helpers.setUpTestDirectory(path.join(__dirname, 'tmp'));
done();
});

it('tests something', function(done){
// Emulating user's prompts:
helpers.run(path.join(__dirname, '../generators/app')).withPrompts(prompts);
done();
});
});

然后做了:

npm test

但是我无法获取生成的应用程序。我需要获取该应用程序并运行专为该应用程序设计的测试。我不想检查某些文件是否被复制,但我想验证生成的应用程序是否通过测试。这些测试属于应用程序而不是生成器。

最佳答案

如果我没猜错的话,你会尝试从 CI 开始测试(有点)。

首先,确保您的 package.json 中有与此类似的内容:

"scripts": {
"test": "mocha"
}

mocha 更改为您的自定义测试命令。

然后在你的test/test-app.js中:

var helpers = require('yeoman-generator').test;

describe('your-generator:app', function(){
var options = { 'skip-install': true };
var prompts = { 'promptName': 'promptValue' };

// Runs once:
before(function(done){
// This method creates temporary folder for test output
// and clears it afterwards.
helpers.setUpTestDirectory(path.join(__dirname, 'tmp'));
done();
});

// Runs before every test case:
beforeEach(function(done){
// This method specifies the working directory for test case:
helpers.testDirectory(path.join(__dirname, 'tmp'), function(err){
if (err){
return done(err);
}

// This is yeoman's method for initializing a generator instance:
yourApp = helpers.createGenerator(
'your-generator:app', ['../../app'], false, options
);
done();

}.bind(this));
});

it('tests something', function(done){
// Emulating user's prompts:
helpers.mockPrompt(yourApp, prompts);
yourApp.run(function(){ // Runing your generator.
// assert something
done();
});
});
});

然后为您的 CI 编写一个脚本来运行 npm test。这能解决您的问题吗?

关于node.js - 如何以编程方式调用 yeoman 生成器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29916695/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com