Справочная информация: Опираясь на этот вопрос о , как выставить библиотеку для модульного тестирования с помощью Jest .Теперь я хотел бы создать класс функций, которые можно вызывать с точечной нотацией внутри точечной нотации (, это даже невозможно ).Сначала немного методологии, которую я сейчас использую:
Вот пример того, как я модифицировал математические функции JavaScript:
Math.mean = function(numericArray){
if(Math.isNumericArray(numericArray)){
return math.mean(numericArray);
}
return false;
}
FYI, строчные буквы math.mean () вызов в математическую библиотеку: https://mathjs.org/,, а isNumericArray - это просто средство проверки, чтобы убедиться, что то, что передано, является числовым массивом.
А затем я экспортирую его так:
module.exports.mean = exports = Math.mean;
Итак, Джест может увидеть это для моих модульных тестов.
Мой актуальный вопрос: Что я хочу сделать, это создать «класс» верхнего уровня с именем Math.acs, чтобы высделал бы звонок в это с Math.acs.Тогда он будет иметь подфункции (EG: foo () & bar ()), поэтому вы будете называть их так: Math.acs.foo (data);или Math.acs.bar (данные);
Я пытался инкапсулировать их во IIFE :
Math.acs = (function(data) {
function foo(data){
console.log('hi mom');
};
function bar(data){
console.log("hi dad");
}
return bar;
})();
, которое не работало (CLI не видит ничего ниже Math.acs)Я также пробовал прямые функции внутри функций, которые также не работали.
Я не умру, если это невозможно, но это сделало бы полдюжины или около того функций, требуемых в модуле ACS, централизованными и проще в обслуживании.Если это невозможно, я могу написать отдельные математические модули так же, как показано выше.