Grunt:使用不同的环境/stream程运行多个摩卡testing

我想在不同的环境和数据库上运行多个摩卡testing。

暂定是创build两个单独的咕噜configuration:

grunt.initConfig({ // first one mochaTest: { options: { ... }, src: ['test/server/*.js'] }, // second one mochaTest: { options: { ... }, src: ['test/slave/*.js'] }, env: { dev: { NODE_ENV: 'development' }, test: { NODE_ENV: 'test' } }, }); grunt.registerTask('test', function (target) { if (target === 'server') { return grunt.task.run([ 'env:test', 'mochaTest' // the first one ]); } if (target === 'slave') { return grunt.task.run([ 'env:dev', 'mochaTest' // the second one ]); } grunt.task.run([ 'test:server', 'test:slave' ]); }); 

当然,这两个configuration没有相同的名称。 我试图通过mochaTest2重命名第二个configuration,但它不被grunt识别。

然后,我尝试把它放在同一个mochaTest任务中,但testing在相同的环境和过程中运行。

 grunt.initConfig({ mochaTest: { server: { options: { ... }, src: ['test/server/*.js'] }, slave: { options: { ... }, src: ['test/slave/*.js'] } }, env: { dev: { NODE_ENV: 'development' }, test: { NODE_ENV: 'test' } }, }); grunt.registerTask('test', function (target) { if (target === 'server') { return grunt.task.run([ 'env:test', 'mochaTest:server' ]); } if (target === 'slave') { return grunt.task.run([ 'env:dev', 'mochaTest:slave' ]); } grunt.task.run([ 'test:server', 'test:slave' ]); }); 

理想的解决scheme应该在一个单独的进程中运行两个mochaTest(一个用于server ,另一个用于slave )。

这可能有点不正统,但是你可以解决你描述的问题,不能通过使用两个能够运行摩卡testing的单独插件来两次调用“mochaTest”。

安装:

 npm install -save grunt-simple-mocha npm install --save grunt-mocha-test 

加载:

 grunt.loadNpmTasks('grunt-mocha-test'); grunt.loadNpmTasks('grunt-simple-mocha'); 

configuration:

 mochaTest: { test: { src: ['test/*serverTests*.js'] } }, simplemocha: { options: { ui: 'bdd' }, all: { src: ['test/*slaveTests*'] } } 

注册任务:

 grunt.registerTask('serverTests', ['mochaTest']); grunt.registerTask('slaveTests', ['simplemocha']); grunt.registerTask('allTests', ['mochaTest', 'simplemocha']); 

执行:

 grunt serverTests // run just server tests grunt slaveTests // run just slave tests grunt allTests // run both server and slave tests