top.js
const opts = require('minimist')(process.argv);
const failAfter = Number(opts['fail-after'] );
function importTest(name, path) {
describe(name, function() {
require(path);
});
}
describe('top', function() {
var fileMatches = null;
let failures = 0;
afterEach(function() {
console.log(this.currentTest.state);
if(this.currentTest.state == 'failed') {
console.log("fail-after = " +failAfter);
failures++;
console.log("failures = " +failures);
if(failures == failAfter){
console.log('\nToo many failures, exiting...');
process.exit(1);
}
}
});
importTest("a",'./test/a/a.js');
importTest("b",'./test/b/b.js');
importTest("test",'./test/test.js');
importTest("test1",'./test/test1.js');
});
我正在尝试将所有我的mocha集成测试包装在我的“顶部”中的不同文件中。描述(如上所述)。这样做的目的是在特定数量的测试用例失败后停止测试(由用户在' fail-after'中指定)。
要包含我必须显式调用importTest()并传递每个测试文件的路径的所有测试。我想自动化它,所以我不必给出每个文件的路径,而是覆盖目录和子目录中的所有文件。
有人可以提出一种方法吗?
我使用命令" mocha --fail-after = 5 ./top.js"
运行我的测试答案 0 :(得分:0)
使用Glob npm模块解决了上述问题。
解决方案:
top.js
const opts = require('minimist')(process.argv);
const failAfter = Number(opts['fail-after'] );
var Glob = require("glob");
var pattern = "*.js";
var options = {matchBase: true, nonull: true};
function importTest(name, path) {
describe(name, function() {
require(path);
});
}
describe('top', function () {
let failures = 0;
afterEach(function () {
console.log(this.currentTest.state);
if (this.currentTest.state == 'failed') {
failures++;
console.log("failures = " + failures);
if (failures == failAfter) {
console.log('\nToo many failures, exiting...');
process.exit(1);
}
}
});
function globArray(pattern, options) {
var list = [];
var pathList = Glob.sync(pattern, options);
pathList.forEach(function (item) {
list.push("./"+item);
});
return list;
}
var mg = globArray(pattern, options);
for(var i=0; i<mg.length; i++) {
importTest("sample", mg[i]);
}
});