Gruntjs 如何设置一个Grunt任务来监视文件并在每次文件更改时持续运行测试
我的出发点是。我已将其设置并正确运行 与其每次我想测试时都手动运行Gruntjs 如何设置一个Grunt任务来监视文件并在每次文件更改时持续运行测试,gruntjs,yeoman,Gruntjs,Yeoman,我的出发点是。我已将其设置并正确运行 与其每次我想测试时都手动运行grunt test,不如让它在每次文件更改时自动运行测试 我希望仍然能够运行grunt服务器,因为它目前给了我所有的惊喜。有没有一种方法可以将持续集成(这个词对吗?我是新来的)添加到grunt任务中 或者最好不要触摸grunt服务器,从本质上消除grunt测试,并用运行在单独终端(如Testem或Karma)中的东西来代替它 或者像Testem或Karma这样的东西可以在grunt任务中使用,而不会丢失有用的功能。当您使用生成器
grunt test
,不如让它在每次文件更改时自动运行测试
我希望仍然能够运行grunt服务器
,因为它目前给了我所有的惊喜。有没有一种方法可以将持续集成(这个词对吗?我是新来的)添加到grunt任务中
或者最好不要触摸grunt服务器
,从本质上消除grunt测试
,并用运行在单独终端(如Testem或Karma)中的东西来代替它
或者像Testem或Karma这样的东西可以在grunt任务中使用,而不会丢失有用的功能。当您使用生成器时,它应该创建一个带有 对于新生成的项目,服务器任务已运行
watch
任务:
grunt.registerTask('server', function (target) {
if (target === 'dist') {
return grunt.task.run(['build', 'open', 'connect:dist:keepalive']);
} else if (target === 'test') {
return grunt.task.run([
'clean:server',
'coffee',
'createDefaultTemplate',
'jst',
'compass:server',
'connect:test:keepalive'
]);
}
grunt.task.run([
'clean:server',
'coffee:dist',
'createDefaultTemplate',
'jst',
'compass:server',
'connect:livereload',
'open',
'watch' // <==== Here
]);
});
假设您运行主干生成器以使用Mocha作为测试框架
您将在grunfile.js中包含以下部分:
在connect
下,配置不同于9000应用程序端口的端口:
connect: {
…
test: {
options: {
port: 9090, // <== Add this here
middleware: function (connect) {
return [
mountFolder(connect, '.tmp'),
mountFolder(connect, 'test'),
mountFolder(connect, yeomanConfig.app)
];
}
}
},
…
},
作为注册任务:
grunt.registerTask('test', [
'clean:server',
'coffee',
'createDefaultTemplate',
'jst',
'compass',
'connect:test',
'mocha'
]);
在watch
下添加一个测试目标,如下所示:
test: {
files: [
'<%= yeoman.app %>/*.html',
'{.tmp,<%= yeoman.app %>}/styles/{,*/}*.css',
'{.tmp,<%= yeoman.app %>}/scripts/{,*/}*.js',
'<%= yeoman.app %>/images/{,*/}*.{png,jpg,jpeg,gif,webp}'
],
tasks: ['test']
}
测试:{
档案:[
“/*.html”,
“{.tmp,}/styles/{,*/}*.css”,
“{.tmp,}/scripts/{,*/}*.js”,
“/images/{,*/}*{png,jpg,jpeg,gif,webp}”
],
任务:[“测试”]
}
通过这些更改,只要文件更改与test.files
glob匹配,就会运行test
任务
让代码正常工作的具体步骤取决于您选择的测试框架和grunt插件。除了和指南之外,请查看测试插件文档,以确保您很好地了解其特定配置的工作原理
您在回答中提到了两个测试框架。我没有用过这两个,但都有grunt插件可用
如果这些常规步骤仍然没有帮助,那么如果您能够提供关于您的项目的更多细节,包括您的grunfile.js
、选择的测试框架、您尝试过的内容以及您看到的错误/失败,这将是非常有帮助的。没错,我已经让默认设置正常工作了。运行grunt服务器
时,我需要更改什么以使其在grunt服务器
上连续运行测试?它将运行其所有相关任务,包括watch
任务,该任务反过来将运行其所有任务,包括您可能配置的任何测试任务。我会尽量更新我的答案,让它更清楚。
grunt.registerTask('test', [
'clean:server',
'coffee',
'createDefaultTemplate',
'jst',
'compass',
'connect:test',
'mocha'
]);
test: {
files: [
'<%= yeoman.app %>/*.html',
'{.tmp,<%= yeoman.app %>}/styles/{,*/}*.css',
'{.tmp,<%= yeoman.app %>}/scripts/{,*/}*.js',
'<%= yeoman.app %>/images/{,*/}*.{png,jpg,jpeg,gif,webp}'
],
tasks: ['test']
}