我正在尝试使用 proxyquire 在第 3 方模块所需的模块中存根 require。
例子:
我的模块需要一个名为“foo”的第三个模块。
该模块依赖于另一个名为“bar”的库,并且在 bar 中有一个我想模拟的要求。这可能吗?
在名为“三”的第 3 方库中:
var bar = require('bar');
在酒吧库中:
var thingiwanttomock = require('thingiwanttomock');
然后在我的测试中是这样的:
it("test", function() {
var mocked = proxyquire('thingiwanttomock', {});
});
编辑:
我想我想要的是这样的:
var three = proxyquire('three', {
'bar': {
'thingiwanttomock': {
'mocked': true
}
}
}
});
但是,如果我在 bar 库中放置一个控制台日志并在需要之后打印出 thingiwanttomock 变量是什么,则它不是我的模拟对象。
在酒吧库中:
var thingiwanttomock = require('thingiwanttomock');
// this is not my object object
console.log('thingiwanttomock should be a mock', thingiwanttomock);
proxyquire 真的会改变从依赖库中的 require 语句中提取的内容吗?也许这就是我的困惑所在。