2

我试图让 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();

但是测试两次都注销了“东西”,而不是在第二次调用时“替换”了。任何帮助表示赞赏。

4

2 回答 2

5

在 proxyquire 中,使用与 require 本身相同的路径:

所以应该是:

const proxyquire = require("proxyquire");
const libStub = {
  thing: () => console.log('replaced')
};
const test = proxyquire("./test", {"./lib": libStub});
test();
于 2017-09-10T01:30:58.587 回答
0

解决这个问题的最好方法,只要你以后会多次面对它,就是使用:

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

于 2017-10-22T23:42:09.023 回答