首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Proxyquire、rewire、SandboxedModule和Sinon:优缺点

Proxyquire、rewire、SandboxedModule和Sinon:优缺点
EN

Stack Overflow用户
提问于 2014-06-13 01:02:58
回答 1查看 12K关注 0票数 72

在模拟Node依赖关系时,我碰巧发现了以下库:

它们似乎都做了或多或少相同的事情:允许您模拟require()调用(除了Sinon,它几乎可以模拟所有东西)。它们似乎都需要一些非常精细的设置,注意到传递给require的字符串的确切语法--在重构期间不是很好。

每个库的优点和缺点是什么?什么时候我应该选择一个而不是另一个?每个库最擅长的示例用例是什么?这个领域的其他产品有哪些更好?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-06-15 08:46:30

这感觉完全像是作弊,但由于没有其他人回答这个问题,这里是这样的:

  • 代理接管了require,并允许您在依赖链中的任何位置注入假货。对于require,你不会接管,而对于你没有为require定义的方法,你会接管,它会回到原来的状态。可以使用noCallThru禁用此功能。因此,它仍然加载原始的东西,只是用你定义的东西替换东西。与overloads.
  • Rewire和SandboxedModule不同,您不能为require定义全局变量Rewire接管require并将__get____set__属性注入到每个模块中。如果你知道私有变量名,你可以替换它。除了在新的V8虚拟机中运行整个进程之外,dependency injection.
  • SandboxedModule几乎与Proxyquire完全相同。(这种方法存在每次测试的性能成本。)它在1.0版本中也有一个令人讨厌的bug,当你没有替换的东西引用了它不支持的本机模块时,它就会失败。看,https://github.com/robrich/sandboxed-module-graceful-fs.
  • Sinon并没有像其他3个那样接管require,相反,它是一个更传统的模拟框架。将指定的方法替换为伪方法,或者创建跟踪调用时间的模拟。
票数 143
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24190043

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档