Следите за деструктурированным требованием метода
У меня есть метод, где я импортирую метод с деструктуризацией. Я пытаюсь шпионить за этим методом, но продолжаю сталкиваться с ошибками.
const { addition } = require('./my-math-lib');
const additionSpy = sinon.spy(addition);
testMethod.doMath();
expect(additionSpy.calledOnce).to.be.equal(true);
К сожалению, этот модульный тест не работает. Когда я смотрю на объект AdditionalSpy, я вижу, что notCalled имеет значение true.
Если я изменю код на -
const mathStuff = require('./my-math-lib');
const additionSpy = sinon.spy(mathStuff, 'addition');
testMethod.doMath();
expect(additionSpy.calledOnce).to.be.equal(true);
Этот юнит-тест пройдёт.
1 ответ
Шпионский метод Синона не может изменять функции. Функции не являются изменяемыми в Javascript. Шпионский метод Синона может создать новую функцию (additionSpy
в вашем первом примере), или он может изменить объект и заменить метод на нем (ваш второй пример). Ваш второй пример выглядит правильно для того, что вы хотите сделать.