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();

Но тест оба раза выводит из системы «вещь» вместо «замены» при втором вызове. Любая помощь приветствуется.


person Retta    schedule 27.08.2017    source источник


Ответы (2)


в proxyquire используйте тот же путь, который вы используете в самом require:

так должно быть:

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

Лучший способ решить эту проблему, если вы столкнетесь с ней много раз в будущем, - это использовать:

Оба будут генерировать исключение в случае, если им не удастся смоделировать что-то с причиной извлечения и извлечь имена файлов, которые они пытались использовать.

person Anton Korzunov    schedule 22.10.2017