是否可以通过编程方式运行Mocha,然后以“详细”模式运行它并以编程方式使用结果?
现在我通过mocha
模块在NodeJS中使用它(在套件内部使用chai
进行断言)。
我想要的是获得有关失败测试的更多数据,而不是样式的一般错误:“期望为真并且得到错误。”
例如,有一种方法可以检查哪个断言失败以及为什么,如果在测试中有多个断言,或者接收有关特定测试的更多信息,如果是,如何?
答案 0 :(得分:1)
当您run Mocha programmatically时,mocha.run()
方法会返回Runner
个对象。如果您收听fail
事件,您将能够了解所有测试失败。这是一个改编自我上面链接的页面的例子:
var Mocha = require('mocha');
var fs = require('fs');
var path = require('path');
var mocha = new Mocha();
var testDir = '.'
fs.readdirSync(testDir).filter(function(file){
// This gets all files that end with the string test.js (so
// footest.js, bar_test.js, baz.test.js, etc.
return file.substr(-7) === 'test.js';
}).forEach(function(file){
mocha.addFile(path.join(testDir, file));
});
var runner = mocha.run(function(failures){
process.on('exit', function () {
process.exit(failures);
});
});
// This is how we get results.
runner.on('fail', function(test, err){
console.log(err);
});
例如,有一种方法可以检查哪个断言失败以及为什么,如果在测试中有多个断言,或者接收有关特定测试的更多信息,如果是,如何?
Mocha没有提供任何工具来将err
处理程序中通过fail
获得的异常与特定的断言相关联。这是因为Mocha被设计用于您想要的任何断言库。它只检测到断言在捕获由失败的断言引发的异常时失败。它不知道有关成功的断言或未执行的断言的任何信息,因为测试在失败的断言的早期结束。您可以从堆栈跟踪中对某些东西进行逆向工程,但Mocha不会帮助您实现此目标。