首页 > 解决方案 > 如何在 require 函数上添加静态方法?

问题描述

我尝试在测试用例.resolveWeak()中的函数上添加静态方法。require

index.js

export function main() {
  return require.resolveWeak('./components/about');
}

index.test.js

describe('custom-method-on-require', () => {
  test('should pass', () => {
    require.resolveWeak = jest.fn();
    const { main } = require('./');
    main();
    expect(require.resolveWeak).toBeCalledWith('./components/about');
  });
});

测试失败并出现错误:

> jest "-o"

 FAIL  issues/custom-method-on-require/index.test.js
  custom-method-on-require
    ✕ should pass (4 ms)

  ● custom-method-on-require › should pass

    TypeError: require.resolveWeak is not a function

      1 | function main() {
    > 2 |   return require.resolveWeak('./components/about');
        |                  ^
      3 | }
      4 | 
      5 | module.exports = { main };

      at main (issues/custom-method-on-require/index.js:2:18)
      at Object.<anonymous> (issues/custom-method-on-require/index.test.js:5:5)

Test Suites: 1 failed, 1 total
Tests:       1 failed, 1 total
Snapshots:   0 total
Time:        0.49 s, estimated 1 s
Ran all test suites related to changed files.

jest.config.js

module.exports = {
  testEnvironment: 'node',
};

如果我执行以下脚本,则添加的.resolveWeak()方法可以正常工作。

require.resolveWeak = function (path) {
  return true;
};

console.log(require.resolveWeak());
^ node ./index.js
true

节点版本:v14.16.0

开玩笑版:"jest": "^26.6.3",

标签: node.jsjestjs

解决方案


推荐阅读