Есть ли способ заглушить функции такого типа? - PullRequest
0 голосов
/ 17 апреля 2020

Существует файл helperFunction. js, который выглядит следующим образом:

module.exports = (arg1, arg2) => {
   \\function body
}

Теперь, в файле. js, эта функция может быть просто вызванным с помощью:

let helperFunction = require('./helperFunction.js');

//some code here

let a=1, b=2;

let val = helperFunction(a,b);

//some code here 

Чтобы проверить файл . js, я хочу заблокировать функцию helperFunction . Тем не менее, синтаксис для sinon.stub выглядит следующим образом:

let functionStub = sinon.stub(file, "functionName");

И здесь в моем случае само fileName является именем функции. Как мне создать заглушку для helperFunction сейчас? Или я могу еще что-нибудь сделать?

1 Ответ

1 голос
/ 18 апреля 2020

Вы можете использовать такую ​​библиотеку, как proxyquire , которую можно использовать для переопределения зависимостей во время тестирования.

Это означало бы, что в итоге вы получите что-то вроде этого:

const helper = sinon.stub();

const moduleToTest = proxyquire('./your-file-name’, {
  './helperFunction': helper,
});

Хотя если вы не хотите добавлять новую библиотеку, вы всегда можете переключиться на рефакторинг файла helperFunction.js и экспортировать свою функцию как именованный экспорт вместо экспорта по умолчанию. Это даст вам объект, имеющий метод, который вам нужен, и который будет вписываться в ваш текущий подход

...