Автоматическое подключение модулей в gulp-mocha

173
26 апреля 2022, 22:40

Я использую gulp-mocha для тестирования. Мне также нужно задействовать другие библиотеки, вроде chai, во всех тестах. Я мог бы написать что-то вроде этого внутри каждого теста:

const {assert} = require('chai');

Но я бы хотел автоматизировать подключение подобных библиотек, т.к. тот же chai все равно будет использоваться в 99% моих тестов. Т.е. грубо говоря, я не хочу копировать require всех нужных библиотек в каждый файл с тестами. Нужно, чтобы библиотеки (а лучше определенные их части, вроде assert у chai) сразу же были доступны как глобальные переменные.

Я знаю, что у mocha есть такие параметры, как global(s) и require. Однако, судя по данному вопросу, gulp-mocha не поддерживает require, а как работает global, я без понятия. Из оф. документации толком ничего про global не понял.

Мой таск с тестами на данный момент:

const test = () => gulp.src(files.src.js, {read: false})
    .pipe(mocha({
        globals: {chai},
        reporter: 'mocha-multi',
        reporterOptions: {
            spec: '-',
            tap: files.reports.jsTest
        }
    }));
Answer 1

Нашел ответ здесь - https://stackoverflow.com/a/31290131/11195930 .

Gulp-mocha на самом деле поддерживает require, как и любые другие параметры mocha. В свою очередь require должен передавать параметры не через module.exports, а просто в виде глобальных переменных. Причем переменные нужно задавать именно как свойства объекта global. В итоге написал небольшой скрипт, который и передаю в require:

// Вспомогательная функция, позволяет как можно более кратко экспортировать библиотеки
function exportLibs(libs) {
    for (let libName in libs) {
        const lib = require(libName);
        if (libs[libName] === true) {
            global[libName] = lib;
            break;
        }
        for (let name of libs[libName])
            global[name] = lib[name];
    }
}
// Здесь указываются все нужные библиотеки
exportLibs({
    chai: ['assert']
});
READ ALSO
Как сделать обратный transition цвета в CSS?

Как сделать обратный transition цвета в CSS?

Недавно начал верстку сайтаЯ задал transition почти каждому элементу на сайте - работает все красиво и слажено

238
java после nextInt проблемы с nextLine

java после nextInt проблемы с nextLine

Есть такой код,который должен выводить информацию о 3 книгах, но код останавливается после 2ой и ошибка(Индекс 3 выходит за пределы длины 3) если...

175
Полиморфизм. Создайте метод который ожидает параметр как объект родительского типа. Внутри этого метода вызовите метод объекта

Полиморфизм. Создайте метод который ожидает параметр как объект родительского типа. Внутри этого метода вызовите метод объекта

У меня есть домашнее задание, но прохожу обучение на английском и не могу до конца понять что конкретно хотят и что нужно сделатьВ оригинале...

259
Создание объектов в Spring

Создание объектов в Spring

Пытаюсь начать изучать SpringНо не могу понять как создать элементарный объект, передав в конструктор значения

249