Mocha - 如何使用 before 块设置变量?

Mocha - How can I set a variable with a before block?

我的例子有

let resort30 = new Resort('Alta');

在文件的顶部,然后在测试用例中使用它,即

let alta = new Visit(resort30, '03/01/2000'); // Note this is before any describe

行得通。但是,如果我在 describe 内和所有 it 之前创建一个 beforebeforeEach

before(function () {
  let resort30 = new Resort('Alta');
});

并注释掉原来的声明,那么resort30就不能被

识别
 ReferenceError: resort30 is not defined                                                                                                  
  at Context.<anonymous> (test/ski_resorts_using_befores.spec.js:52:26)  

当我将该变量移动到 beforebeforeEach 以便所有 it 都可以使用它时,如何让它工作?

我不希望它位于顶部,我希望它在描述范围内,因为我计划在此文件中进行更多描述。即使有 1 个 describe ,我也希望能够将 before 和 beforeEach` 用于我想创建的变量和对象。

您看不到 resort30,因为如果您在函数内部声明它,它的范围仅限于该函数。

let resort30; // declare it at the top level scope of the file

before(function () {
    resort30 = new Resort('Alta'); // modify the value here
});

let 仅在已声明的范围或内部范围内可见。这就是为什么它在另一个范围内不被识别的原因。要拥有某种全局变量但作用域为 describe() 块,您需要在块顶部声明它并在 before()beforeEach() 块中初始化:

describe('Test suite', () => {

    let resort30 = null;

    before(() => {
        resort30 = new Resort('Alta');
    });

    it('should pass', () => {
        console.log(resort30);
    });
});