proxyquire 方便的nodejs 依赖覆盖方法模块
基于proxyquire 我们可以方便的覆盖依赖模块,方便开发测试系统,以及bug修复
使用
- 项目准备
package.json
{
"name": "proxyquire-learning",
"version": "1.0.0",
"main": "index.js",
"license": "MIT",
"dependencies": {
"proxyquire": "^2.1.3"
},
"scripts": {
"test":"node foo.test.js",
"start":"node foo.js"
}
}
- 项目结构
├── bar.js
├── foo.js
├── foo.test.js
├── package.json
└── yarn.lock
- 代码说明
bar.js
模块,需要的依赖
module.exports = {
toAtm: function (val) { return 0.986923267 * val }
}
foo.js
模块调用
var bar = require('./bar')
console.log(bar.toAtm(22))
foo.test.js
集成proxyquire的测试
var proxyquire = require('proxyquire')
var barStub = { }
barStub.toAtm = function (val) { return 0 /* wonder what happens now */ }
var foo = proxyquire('./foo', { './bar': barStub })
运行
- 实际
yarn start
- 测试
yarn test
说明
proxyquire 的功能,以及配置还是很强大的,同时对于依赖的传递处理,以及全局替换,cache 都是有支持的,是一个很不错的工具