【发布时间】:2016-02-09 16:53:45
【问题描述】:
我想在不同的环境和数据库上运行多个 mocha 测试。
一个尝试是创建两个单独的 grunt 配置:
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'
]);
});
当然,这两个配置名称相同是行不通的。我尝试将第二个配置重命名为 mochaTest2,但 grunt 无法识别它。
然后,我尝试将它放在同一个 mochaTest 任务中,但测试是在同一个环境和进程中运行的。
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'
]);
});
理想的解决方案应该在单独的进程中运行两个 mochaTest(一个用于server,另一个用于slave)。
【问题讨论】: