如何在 Mocha 根级挂钩中设置超时?

How to set timeout in Mocha root-level hooks?

我想为 Mocha 测试的根级别挂钩设置超时。

我的根级钩子看起来像这样,在 test/setup.ts:

import * as database from '../src/database/_db'

export const mochaHooks = {
    /* Connect to the DB before running any tests */
    beforeAll(done: () => void) {
        database.initialize(done)
    },
    
    /* Close the DB connect after all tests finished */
    afterAll(done: () => void) {
        database.close(done);
    }
};

这是通过 --require test/setup.ts 加载的。数据库连接需要很长时间,所以我想增加超时值。

运行 Mocha with -t 10000 可以工作,但也会为每个测试设置超时。

我也尝试在 BeforeAll 中添加 this.timeout(3000) 但得到 ✖ ERROR: test/setup.ts:10:14 - error TS2339: Property 'timeout' does not exist on type '{ beforeAll(done: () => void): void; afterAll(done: () => void): void; }'.

来自文档 ARROW FUNCTIONS:

Passing arrow functions (aka “lambdas”) to Mocha is discouraged. Lambdas lexically bind this and cannot access the Mocha context.

使用箭头函数时未绑定测试上下文。所以你不能使用 this.timeout().

您应该将箭头函数更改为 function declaration,其中包含 function 关键字。