Я пишу математическую библиотеку для использования в браузере и использую Jest для запуска на ней модульных тестов (которые, как я понимаю, больше ориентированы на Node).Я решил большинство проблем, расширив JS Math, но для усреднения (среднего) и стандартного отклонения я работаю с https://mathjs.org's математической библиотекой.Все это прекрасно работает в браузере, но Jest не может увидеть библиотеку mathjs, и я не уверен, как это исправить.
Это конкретный раздел кода, который не работает в Jest (CalRunWebMath.js):
//Extend Math to calculate coefficient of variation:
Math.cv = function(numericArray){
var std = math.std(numericArray);
var mean = math.mean(numericArray);
//this is how I originally did it:
//return math.std(numericArray)/math.mean(numericArray);
return std/mean;
}
try {
module.exports.cv = exports = Math.cv;
}
catch (e) {}
//and this is a snippet of the internal tests that works just fine in the browser, but not in Jest
var data1 = [10.4,20.3,30.2,40.1];
console.log(Math.cv(data1)); //0.5061720808904743
Это HTML-код, управляющий им:
<script src='js/math.js'></script>
<script src='js/CalRunWebMath.js'></script>
Это тестовый файл Jest:
const crwm = require('./CalRunWebMath.js');
const math = require('./math.js');
const cv = crwm.cv;
test('Calculates coefficient of variation', ()=> {
var data1 = [10.4,20.3,30.2,40.1];
expect(cv(data1)).toBe(0.5061720808904743);
});
Полученная ошибка: ReferenceError: математика не определена (я пропустил другие проходные тесты из приведенного выше фрагмента):
FAIL ./CalRunWebMath.test.js
√ Calculates slope of two coordinates (6ms)
× Calculates coefficient of variation (4ms)
√ Calculates Y-intercept of two coordinates (1ms)
√ Calculates the mean of an array of decimals (48ms)
● Calculates coefficient of variation
ReferenceError: math is not defined
43 | Math.cv = function(numericArray){
44 | //console.log(math.std);
> 45 | var std = math.std(numericArray);
| ^
46 | var mean = math.mean(numericArray);
47 | //return math.std(numericArray)/math.mean(numericArray);
48 | return std/mean;
at math (js/CalRunWebMath.js:45:12)
at Object.cv (js/CalRunWebMath.test.js:14:9)
Test Suites: 1 failed, 1 total
Tests: 1 failed, 3 passed, 4 total
Как я могу открыть математический модуль вбраузер, чтобы Джест мог видеть это в тестах?