Proxyquire不是存根

时间:2017-08-27 21:03:47

标签: javascript proxyquire

我正在尝试让Proxyquire使用简单的方法替换,但我无法弄清楚我做错了什么。

我创建了lib.js

module.exports = {
    thing: () => {
        console.log("thing");
    }
};

和test.js

const lib = require("./lib");

module.exports = () => {
    lib.thing();
};

并尝试将依赖关系和替换事物替换为另一个函数,即

const proxyquire = require("proxyquire");
const libStub = {};
const test = proxyquire("./test", {"lib": libStub});

test();

libStub.thing = () => {
    console.log("replaced");
};

test();

但测试是在第二次调用时两次登出“事物”而不是“替换”。任何帮助表示赞赏。

2 个答案:

答案 0 :(得分:5)

在proxyquire中,

使用您在require本身中使用的相同路径:

所以应该:

const proxyquire = require("proxyquire");
const libStub = {
  thing: () => console.log('replaced')
};
const test = proxyquire("./test", {"./lib": libStub});
test();

答案 1 :(得分:0)

解决此问题的最佳方法,只要你将来多次面对它就会使用:

如果他们无法使用提取原因模拟某些内容并提取他们尝试使用的文件名,则两者都会抛出异常。