间谍破坏需求方法

时间:2016-06-09 23:52:19

标签: javascript node.js unit-testing require sinon

我有一个方法可以导入一个带有解构的方法。我试图窥探这种方法,但一直遇到错误。

const { addition } = require('./my-math-lib');

const additionSpy = sinon.spy(addition);

testMethod.doMath();

expect(additionSpy.calledOnce).to.be.equal(true);

不幸的是,这个单元测试不起作用。乳清我看看additionSpy对象,我看到notCalled是真的。

如果我将代码更改为 -

const mathStuff = require('./my-math-lib');

const additionSpy = sinon.spy(mathStuff, 'addition');

testMethod.doMath();

expect(additionSpy.calledOnce).to.be.equal(true);

此单元测试将通过。

1 个答案:

答案 0 :(得分:2)

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