javascript - 监视解构的 require 方法

标签 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);

这个单元测试会通过。

最佳答案

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

关于javascript - 监视解构的 require 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37737961/

相关文章:

javascript - 单击时跨度子对象

javascript - 如何匹配包含特殊字符的整个单词?

android - tns 测试 android 第一次失败,然后在第二次执行时成功

visual-studio-2008 - 当我的单元测试在 Visual Studio 2008 中运行时,如何查看控制台输出?

unit-testing - 使用 PHPUnit 运行多个测试套件

javascript - 使用javascript测试文件是否存在

javascript - Google Chrome 扩展 - chrome.storage.sync.get 不起作用

node.js - put 在express js 中不起作用

node.js - Node JS - 无法终止使用子进程 Exec 执行的进程

javascript - 在 node.js 中使用 request-promise 模块发布并收到 http_outgoing.js :618 throw new ERR_INVALID_ARG_TYPE ('first argument' , 错误