监视解构的 require 方法

Vto*_*one 5 javascript unit-testing require node.js sinon

我有一种方法可以导入带有解构的方法。我试图监视这个方法,但不断遇到错误。

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

const additionSpy = sinon.spy(addition);

testMethod.doMath();

expect(additionSpy.calledOnce).to.be.equal(true);
Run Code Online (Sandbox Code Playgroud)

不幸的是这个单元测试不起作用。当我查看additionSpy 对象时,我发现notCalled 是true。

如果我将代码更改为 -

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

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

testMethod.doMath();

expect(additionSpy.calledOnce).to.be.equal(true);
Run Code Online (Sandbox Code Playgroud)

这个单元测试将会通过。

Mac*_*cil 3

诗乃的spy方法无法修改函数。Javascript 中的函数是不可变的。Sinon 的间谍方法可以创建一个新函数(additionSpy在您的第一个示例中),或者它可以修改一个对象并替换其上的方法(您的第二个示例)。您的第二个示例看起来适合您想要做的事情。