Корректировка области видимости переменной в тестах

Объявите textValue в describe, а присваивайте в hook. Describe не должен быть async: асинхронная подготовка выполняется в before или beforeEach.

Короткий ответ

Что ответить на собеседовании

Объявите textValue в describe, а присваивайте в hook. Describe не должен быть async: асинхронная подготовка выполняется в before или beforeEach.

Подробный разбор

Ответ с пояснениями

Условие

В примере переменная textValue объявлена внутри хука before(), однако позже она используется за пределами своей области видимости, что приводит к ReferenceError. Чтобы устранить эту проблему, переменную необходимо объявить в более широком контексте, например, в блоке describe. После переноса объявления переменная будет доступна как в хуках, так и в самих тестах.

describe('TEST', async () => {
    let textValue; // объявляем переменную в области describe

    before(async function () {
        textValue = 'Test String'; // инициализируем её
    });

    after(async function () {
        endTest();
    });

    describe('First test case', async () => {
        it('should update textValue', async () => {
            textValue = 'New string'; // теперь переменная доступна
            console.log(textValue); // выведет: "New string"
        });
    });
});

Ответ

Объявите textValue в describe, а присваивайте в hook. Describe не должен быть async: асинхронная подготовка выполняется в before или beforeEach.

Пример с изоляцией тестов:

import assert from 'node:assert/strict';
describe('TEST', function () {
    let textValue;
    beforeEach(function () { textValue = 'Test String'; });
    it('updates textValue', function () {
        textValue = 'New string';
        assert.equal(textValue, 'New string');
    });
});

BeforeEach сбрасывает значение перед каждым тестом. Console.log не заменяет assertion. Если endTest возвращает Promise, after должен его вернуть или дождаться await, иначе очистка может закончиться уже после hook.

Источник: mochajs.org.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее