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

Mic*_*ant 7 javascript mocha.js chai

我的例子有

let resort30 = new Resort('Alta');
Run Code Online (Sandbox Code Playgroud)

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

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

这样可行。但是,如果我在所有s 之内和之前创建一个beforeor :beforeEachdescribeit

before(function () {
  let resort30 = new Resort('Alta');
});
Run Code Online (Sandbox Code Playgroud)

并注释掉原来的声明,然后resort30不被识别

 ReferenceError: resort30 is not defined                                                                                                  
  at Context.<anonymous> (test/ski_resorts_using_befores.spec.js:52:26)  
Run Code Online (Sandbox Code Playgroud)

当我将该变量移至beforebeforeEach让所有it的人都可以使用它时,如何才能使其工作?

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

Seb*_*rek 7

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

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

    let resort30 = null;

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

    it('should pass', () => {
        console.log(resort30);
    });
});
Run Code Online (Sandbox Code Playgroud)