MochaJS:如何在全局 mocha 实例中调用规范级别的挂钩?

MochaJS: How to call spec level hooks in the global mocha instance?

有没有办法在每个规范前后 运行 挂钩? 例如,有 3 个 *.spec.js 文件,控制台标准输出应打印如下..

(我知道这可以在单个规范本身的钩子之前完成。但这意味着在所有规范文件中编写大量重复代码。)

有 rootHooks 但它们会在所有规范的前后打印 运行。我的要求是在每个规格之前和之后打印(而不是在整个套件之前和之后)

Spec started at : 12:00:00 (<-- called from global spec level beforeHook) 
  ✓ Spec 1 tests
  ✓ ...
  ✓ ...
Spec Ended at : 12:00:10 (<-- called from global spec level afterHook) 

Spec started at : 12:00:11 (<-- called from global spec level beforeHook) 
  ✓ Spec 2 tests
  ✓ ...
  ✓ ...
Spec Ended at : 12:00:15 (<-- called from global spec level afterHook) 

Spec started at : 12:00:15 (<-- called from global spec level beforeHook) 
  ✓ Spec 3 tests
  ✓ ...
  ✓ ...
Spec Ended at : 12:00:20 (<-- called from global spec level afterHook)

我相信你可以使用 root hook

// test/timer-hooks.js

function timer() {
  // Get the time and format it as a string
}

exports.mochaHooks = {
  beforeEach(done) {
    console.log(`Spec started at : ${timer()}`);
    done();
  },
  afterEach(done) {
    console.log(`Spec ended at : ${timer()}`);
    done();
  }
};

然后,当 运行 测试时,添加 --require test/timer-hooks.js

mocha --require test/timer-hooks.js