Javascript 如何在浏览器中公开外部库,以便Jest单元测试可以看到它?

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

我正在编写一个用于浏览器的数学库,并使用Jest在其上运行单元测试(我意识到它更适合节点)。我通过扩展JS Math解决了大多数问题,但为了实现平均值(均值)和标准差,我使用的是的数学库。这一切都可以在浏览器中正常工作,但Jest无法看到mathjs库,我不知道如何修复它

这是Jest(CalRunWebMath.js)中失败的特定代码部分:

这是驱动它的HTML:

<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!
});