4

我正在尝试使用 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 语句中提取的内容吗?也许这就是我的困惑所在。

4

0 回答 0