我需要一些提示来编写脚本来回答自动生成器的提示。
这是背景资料。我使用yeoman的发电机 - 发电机创建了自己的发电机。我添加了一些提示。为了现在和将来的开发中测试模板项目,我需要生成一个示例项目并测试不断发展的模板。因为我希望哈德森做测试例程,我需要自动化它(通过脚本回答这些提示)
根据我的需要,我未能在以下来源中找到相关信息:
以前有人这样做过吗?
- 更新30/4月 -
我尝试将以下脚本作为'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
但是我没能抓住生成的应用程序。我需要获取应用程序并运行为应用程序设计的测试。我不想检查是否复制了某些文件,但我想验证生成的应用程序是否通过了测试。那些测试属于app而非发生器。
答案 0 :(得分:3)
如果我做对了,你就要从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
。
这会解决您的问题吗?