首页 > 解决方案 > 如何以编程方式在 Node.js Mocha 测试套件中显示当前测试编号?

问题描述

我目前有一个测试套件,我执行并看到如下内容:

/path/to/test/test.js
    ✓ test passed
    ✓ test passed
    ✓ test passed (356ms)

/path/to/test/testing.js
    ✓ test passed (200ms)
    ✓ test passed (356ms)
    ✓ test passed (325ms)

6 passing (1m)

我有数百个测试,所以我想看看是否有一种方法可以打印当前进程正在进行的测试,至少在每个测试文件之后,例如

/path/to/test/test.js
    ✓ test passed
    ✓ test passed
    ✓ test passed (356ms)

    3/6 tests completed

/path/to/test/testing.js
    ✓ test passed (200ms)
    ...

这可能吗?我在想描述钩子可能会起作用,但没有看到具体的迹象表明情况如此:

https://mochajs.org/#describing-hooks

标签: node.jsmocha.js

解决方案


您可以编写自己的记者来执行此操作,或者您可以在 npm 上查看是否有人已经为您执行了该操作。

像下面这样的东西应该可以解决问题:

var passes = 0;
var failures = 0;

runner.on('pass', function(test){
  passes++;
  console.log(`${test.fullTitle()} passed`);
});

runner.on('fail', function(test, err){
  failures++;
});

runner.on('suite end', function () {
  console.log(`${passes}/${failures} tests completed`);
});

推荐阅读