Javascript 如何在浏览器中公开外部库,以便Jest单元测试可以看到它?
我正在编写一个用于浏览器的数学库,并使用Jest在其上运行单元测试(我意识到它更适合节点)。我通过扩展JS Math解决了大多数问题,但为了实现平均值(均值)和标准差,我使用的是的数学库。这一切都可以在浏览器中正常工作,但Jest无法看到mathjs库,我不知道如何修复它 这是Jest(CalRunWebMath.js)中失败的特定代码部分: 这是驱动它的HTML:Javascript 如何在浏览器中公开外部库,以便Jest单元测试可以看到它?,javascript,unit-testing,jestjs,Javascript,Unit Testing,Jestjs,我正在编写一个用于浏览器的数学库,并使用Jest在其上运行单元测试(我意识到它更适合节点)。我通过扩展JS Math解决了大多数问题,但为了实现平均值(均值)和标准差,我使用的是的数学库。这一切都可以在浏览器中正常工作,但Jest无法看到mathjs库,我不知道如何修复它 这是Jest(CalRunWebMath.js)中失败的特定代码部分: 这是驱动它的HTML: <script src='js/math.js'></script> <script src='js
<script src='js/math.js'></script>
<script src='js/CalRunWebMath.js'></script>
我收到的错误是:ReferenceError:math未定义
(我从上面的代码片段中省略了其他通过的测试):
如何在浏览器中公开数学模块,以便Jest可以在测试中看到它?节点中的全局名称空间对象可用作
全局
您可以向全局命名空间对象添加math
,如下所示:
global.math = require('./math.js');
const { cv } = require('./CalRunWebMath.js');
test('Calculates coefficient of variation', () => {
var data1 = [10.4, 20.3, 30.2, 40.1];
expect(cv(data1)).toBe(0.5061720808904743); // Success!
});
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);
});
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
global.math = require('./math.js');
const { cv } = require('./CalRunWebMath.js');
test('Calculates coefficient of variation', () => {
var data1 = [10.4, 20.3, 30.2, 40.1];
expect(cv(data1)).toBe(0.5061720808904743); // Success!
});