我想知道是否有办法让mocha列出它将执行的所有测试。当我使用mocha --help列出它们时,我没有看到任何合理的选项;有几个记者,但似乎都没有设计用于列出将要处理的文件(或命名将要运行的测试)。
答案 0 :(得分:4)
记者的工作方式是通过监听由mocha发送的事件,这些事件仅在运行真实测试时发送。
套件包含测试列表,因此您需要信息。但是,该套件通常只在run()上初始化。
如果您可以从nodejs而不是从命令行运行mocha,则可以根据Using-mocha-programmatically中的代码创建此diy解决方案:
var Mocha = require('mocha'),
fs = require('fs'),
path = require('path');
// First, you need to instantiate a Mocha instance.
var mocha = new Mocha(),
testdir = 'test';
// Then, you need to use the method "addFile" on the mocha
// object for each file.
// Here is an example:
fs.readdirSync(testdir).filter(function(file){
// Only keep the .js files
return file.substr(-3) === '.js';
}).forEach(function(file){
// Use the method "addFile" to add the file to mocha
mocha.addFile(
path.join(testdir, file)
);
});
// Here is the code to list tests without running:
// call mocha to load the files (and scan them for tests)
mocha.loadFiles(function () {
// upon completion list the tests found
var count = 0;
mocha.suite.eachTest(function (t) {
count += 1;
console.log('found test (' + count + ') ' + t.title);
})
console.log('done');
});