node.js - 如何在 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",
解决方案
推荐阅读
- python - 如何修复此 python 代码中的 HTTP 错误 400?
- spring - 为什么 Range 标头不适用于使用嵌入式 Tomcat 从 Spring Boot WAR 托管的静态资源?
- ruby-on-rails - 在 Linux 上安装 RoR 包时出现 Gem::FilePermissionError
- go - 如何在 Go Present 中将文本添加到小节?
- powershell - PowerShell SFTP 上传到特定端口号
- apache-flink - 如何在不同的节点上运行 Flink Job Manager 和 Task Manager?
- javascript - 运行一些 Ajax 代码在控制台中给出了一个未定义的值
- python - 可视化 cumsum python
- typescript - Maybe monad 的另一个名字是什么?
- druid - 将来自多个 kafka 主题的数据提取到 druid 中的单个数据源中