间谍的解构要求的方法

我有一个方法,我input一个解构方法。 我试图窥探这个方法,但仍然遇到错误。

const { addition } = require('./my-math-lib'); const additionSpy = sinon.spy(addition); testMethod.doMath(); expect(additionSpy.calledOnce).to.be.equal(true); 

不幸的是,这个unit testing不起作用。 乳清我看着additionSpy对象,我看到notCalled是真的。

如果我将代码更改为 –

 const mathStuff = require('./my-math-lib'); const additionSpy = sinon.spy(mathStuff, 'addition'); testMethod.doMath(); expect(additionSpy.calledOnce).to.be.equal(true); 

这个unit testing会通过。

Sinon的间谍方法不能修改function。 函数在Javascript中不可变。 Sinon的间谍方法可以创build一个新的函数(在第一个例子中是additionSpy ),或者它可以修改一个对象并replace它上面的方法(第二个例子)。 你的第二个例子看起来是正确的,你想要做什么。