我是Mocha的新手,所以这可能是一个微不足道的问题,但还没有找到答案:
我有一个简单的NodeJS项目,包含以下package.json
{
"name": "test",
"version": "1.0.0",
"description": "test",
"main": "index.js",
"scripts": {
"test": "mocha"
},
"author": "davide talesco",
"license": "ISC",
"devDependencies": {
"chai": "^4.0.2",
"mocha": "^3.4.2"
}
}
以及测试文件夹下的以下2个测试文件:
test1.js
process.env.NODE_ENV = 'test';
var chai = require('chai');
var should = chai.should();
describe('Test setProp', function(){
it('env variable should be test', function(done){
process.env.NODE_ENV.should.be.equal('test');
return done();
});
});
test2.js
process.env.NODE_ENV = 'prod';
var chai = require('chai');
var should = chai.should();
describe('Test setProp', function(){
it('env variable should be prod', function(done){
process.env.NODE_ENV.should.be.equal('prod');
return done();
});
});
当我运行npm测试时,第一个测试成功完成,而第二个测试失败,如下所示
ie-macp-davidt:crap davide_talesco$ npm test
> pc-lib@1.0.0 test /Users/davide_talesco/development/crap
> mocha
Test setProp
1) env variable should be test
Test setProp
✓ env variable should be prod
1 passing (16ms)
1 failing
1) Test setProp env variable should be test:
AssertionError: expected 'prod' to equal 'test'
+ expected - actual
-prod
+test
at Context.<anonymous> (test/test1.js:11:36)
npm ERR! Test failed. See above for more details.
很明显,测试是在同一个过程中运行的...... 我的问题是:如何让它们在完全独立的流程下运行,这样每个流程都可以设置自己的环境?
谢谢,
的Davide
答案 0 :(得分:3)
最简单的方法之一是使用Unix find
命令:
find ./test -name '*.js' -exec mocha \{} \;
我建议使用本地mocha
二进制文件,以免在全球范围内安装时出现问题:
find ./test -name '*.js' -exec ./node_modules/.bin/mocha \{} \;
如果您想将其添加到 package.json ,请注意应该转义反斜杠:
...
"scripts": {
"test": "find ./test -name '*.js' -exec ./node_modules/.bin/mocha \\{} \\;"
},
...
答案 1 :(得分:0)
如果您想在测试文件失败后立即中止测试,则可以执行以下操作:
find ./test -type f -name "*.js" -exec sh -c 'for n; do ./node_modules/.bin/mocha "$n" || exit 1; done' sh {} +
答案 2 :(得分:0)
或者,您可以使用mocha-parallel-tests
。
要安装:
var markerCluster = L.markerClusterGroup({
showCoverageOnHover: false,
iconCreateFunction: function (cluster) {
return L.divIcon({ html: '<div><span>' + cluster.getChildCount() + '</span></div>',
className: 'marker-cluster-custom marker-cluster-grey',
iconSize: [50, 50],
iconAnchor: [25, 25]});
}
});
要使用:
https://www.npmjs.com/package/mocha-parallel-tests
很妙的是,它是合适的摩卡赛跑者,因此您可以配置报告并通过标准的摩卡配置,例如保释。