
您的问题不是Sinon是否支持这一点,而是您对Ecmascript中“类”的工作方式缺少了解,如尝试在
constructor测试代码中对属性进行存根显示。这将永远不会起作用,因为该属性与结果对象的结果无关。它只是对用于创建对象的函数的引用。我在Sinon跟踪器上涵盖了一个非常相似的主题,您可能有兴趣阅读以获取一些核心JS
foo :-)基本上,无法对构造函数进行存根,但是您可以强迫您的代码使用另一个构造函数通过DI或链接接缝代替它。
事实上,在同一线程中有一些答案,您将看到我涵盖了一个示例,说明我本人如何设计类使用支持通过依赖注入轻松测试的Redis。您可能想将其检出,因为它或多或少直接适用于上述示例模块。
您已经尝试使用的另一种技术是使用 链接缝 (使用
rewire)。Sinon主页上有一篇不错的文章。双方
rewire并
proxyquire会就好在这里做的工作:我觉得你刚才通过包装要求声明以模拟复杂的事情了一下。
即使我是Sinon维护团队的成员,我也从未使用过该
mock功能,因此我无法告诉您如何使用该功能,因为我认为它使测试变得晦涩难懂,但是要使基本的链接接缝正常工作,
rewire我基本上会删除所有Sinon首先编写代码,然后进行基本的案例研究(删除
redis已创建的存根模块)。
只有这样,才能根据需要添加Sinon代码。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)