【问题标题】:How to get verbose results in Mocha tests programmatically?如何以编程方式在 Mocha 测试中获得详细结果?
【发布时间】:2017-03-29 18:31:01
【问题描述】:

是否可以以编程方式运行 Mocha,但以“详细”模式运行并以编程方式使用结果?

现在我通过mocha 模块在NodeJS 中使用它(在套件内部使用chai 进行断言)。 我想要的是获得更多关于失败测试的数据,而不是风格的一般错误:“预期为真,结果为假”。

例如,如果测试中有多个断言,是否有一种方法可以检查哪个断言失败以及为什么失败,或者接收有关特定测试的更多信息,如果是,如何?

【问题讨论】:

  • 这听起来像是 a/b 问题。您可能不需要以编程方式执行此操作。我认为 Mocha 接受一个配置文件。阅读文档
  • 这可能无需任何编码即可解决您的问题:mochajs.org/#mochaopts

标签: node.js mocha.js chai


【解决方案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 不提供任何工具将您通过errfail 处理程序中获得的异常与特定 断言相关联。这是因为 Mocha 旨在与您想要的任何断言库一起使用。它仅在捕获失败的断言引发的异常时才检测到断言失败。它对成功的断言或未执行的断言一无所知,因为测试在断言失败时提前结束。您也许可以从堆栈跟踪中对某些内容进行逆向工程,但 Mocha 无法帮助您实现这一目标。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-12-29
    • 1970-01-01
    • 2015-11-17
    • 1970-01-01
    • 2022-08-05
    • 2016-04-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多