我想在不同的环境和数据库上运行多个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
)。
答案 0 :(得分:1)
这可能有点不正统,但你可以解决你所描述的问题而无法调用“mochaTest”#39;两次使用两个能够运行mocha测试的独立插件。
安装:
npm install -save grunt-simple-mocha
npm install --save grunt-mocha-test
负载:
grunt.loadNpmTasks('grunt-mocha-test');
grunt.loadNpmTasks('grunt-simple-mocha');
配置:
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
答案 1 :(得分:1)
我知道这是一个老问题,但由于我在寻找相同的答案时偶然发现了它,结果grunt-mocha-test
支持子对象。
例如,您可以在这里定义正在运行的服务器和从属测试:
grunt.initConfig({
... // skipping other details
mochaTest : {
server : {
options: { ... },
src: ['test/server/*.js']
},
slave : {
options: { ... },
src: ['test/slave/*.js']
}
}
});
然后你可以通过"指定子对象来运行它们:",就像
一样grunt mochaTest:server
或
grunt.registerTask('slave', ['jshint', 'mochaTest:slave']);