Mocha - Как я могу установить переменную с блоком before? - PullRequest
0 голосов
/ 29 января 2020

Мой пример имеет

let resort30 = new Resort('Alta');

в верхней части файла, а затем использует его в тестовом примере, то есть

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

Это работает. Однако если я создам before или beforeEach в describe и перед всеми it с:

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)  

Как заставить его работать, когда я перемещаю эту переменную в before или beforeEach, чтобы все it s могли ее использовать?

Надеюсь не хочу, чтобы это было наверху, я хочу, чтобы оно было ограничено описанием, так как я планирую больше описаний в этом файле. Даже с 1 описанием я хочу иметь возможность использовать before и beforeEach` для переменных и объектов, которые я хочу создать.

Ответы [ 2 ]

2 голосов
/ 29 января 2020

let отображается только в заявленном объеме или из внутренних областей. Вот почему это не признается в другом объеме. Чтобы иметь какую-то глобальную переменную, но ограниченную до блока describe(), вы должны объявить ее в верхней части блока и инициализировать в блоке before() или beforeEach():

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

    let resort30 = null;

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

    it('should pass', () => {
        console.log(resort30);
    });
});
1 голос
/ 29 января 2020

Вы не можете видеть resort30, потому что, если вы объявляете его внутри функции, оно распространяется только на эту функцию.

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

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